天天写程序,连调试器工作原理都不懂?一个动画帮你搞懂!

合集 · 动画图解技术 (15)

  1. 5:50
    Redis缓存管理机制
  2. 6:14
    Redis持久化存储机制
  3. 6:46
    Redis哨兵与高可用原理
  4. 4:41
    Redis集群是如何工作的?
  5. 6:53
    一个动画搞懂MySQL索引原理!
  6. 6:20
    可怕!CPU竟成为黑客帮凶!
  7. 6:39
    完了!CPU一味求快出事儿了!
  8. 10:40
    Linux如何调度进程?大学老师不讲的,看完动画秒懂!
  9. 6:47
    HTTPS真的安全吗,一个动画秒懂!
  10. 6:28
    劫持TCP连接,这操作太骚了!
  11. 5:59
    CPU被挖矿,Redis竟是内鬼!
  12. 5:10
    CPU深夜狂飙,真相让人傻眼了!
  13. 6:31
    一个整数+1,攻破Linux系统内核!
  14. 6:24
    天天写程序,连调试器工作原理都不懂?一个动画帮你搞懂!
  15. 5:05
    哈希表哪家强,几大编程语言吵起来了!
Description
给程序下断点的背后,原来还有这么多小知识呢~今天又是涨知识的一天

Comments

果苹 2025-06-23

原来是这样啊,我还真好奇过调试器是怎么做到的

♥ 64 ↩ 4

小白真的起不来 2025-06-24

这个好,之前面试字节被问到过有没有了解过gdb怎么做的

♥ 50 ↩ 4

虹色小鱼 2025-06-23

顺便把反调试的一些技术实现介绍下呗。

♥ 44 ↩ 8

代码随想录 2025-06-23

学会了[doge]

♥ 40 ↩ 1

wdfk_prog 2025-06-23

知道当前的栈和入栈地址不断往前回溯

♥ 36 ↩ 1

风华谷城 2025-06-24

所以调试都是依赖CPU硬件,还以为是纯软件实现的

♥ 23 ↩ 14

tc-alien-1059 2025-06-23

好吧,看到调试器第一反应:int 3 (鉴定为:《汇编语言》受害者)

♥ 12

CMD不拿offer不改名 2025-06-24

bt命令查看栈应该是通过查栈帧表,这个链表是每次函数调用都会在栈分布的一块区域,而bt的执行过程是用指针寄存器rbp,一个个栈帧查,取出返回地址rip,根据符号表,在gdb返回出对应的行数信息,直到rbp为0,或者栈顶越界。堆是动态分配的区域,通过指令malloc实现,应该是看不到的

♥ 11 ↩ 1

泡面蟹 2025-06-23

执行栈反查就是倒着遍历调用栈(x86)内存取栈帧。该方法仅x86有效,ARM的调用栈就比较烦(因为栈帧可能不在了),以前写过一个。

♥ 10 ↩ 3

徽山佬烄 2025-06-23

谁知道ARM V9指令集 有几个debug register ?[doge]

♥ 9 ↩ 2

哈哈哈哈飞飞 2025-06-27

使用vs下数据断点的时候,下了四个再继续添加就会提示“无法设置断点。已设置数据断点的最大数目”。是不是就是因为只有DR0到DR3四个调试寄存器用来监视内存。那为什么DR5,DR6不能使用呢

♥ 6 ↩ 1

轩辕的编程宇宙 2025-06-24

统一回复,动画用的keynote做的

♥ 5 ↩ 2

八月の圣诞 2025-06-23

那单片机上的gdb调试是怎么实现的呢

♥ 5 ↩ 12

RainbowLea 2025-06-24

懂了[doge_金箍]就是这样这样,然后再那样那样,最后踉踉跄跄,就,就,what happened?

♥ 5 ↩ 1

暗夜之色 2025-07-02

看了两遍,略微吸收了一些知识,保存下来慢慢看。 另外想请教一下,@轩辕的编程宇宙 UP,对于x64的系统/CPU,调试寄存器是扩展了数量和对应的功能吗?

♥ 3 ↩ 1

PramSin 2025-06-23

您好,可以问一下这样的动画是如何制作的嘛,感觉好流畅

♥ 2 ↩ 2

雪琳Sherlyn 2025-06-23

OpenOCD

♥ 2

猫大头 2025-06-23

终于知道为啥在内存下读写断点要叫硬件断点了[支持]

♥ 2

biaolang 2025-06-23

那是怎么将cpu指令与对应代码关联起来的呀

♥ 2 ↩ 6