天天写程序,连调试器工作原理都不懂?一个动画帮你搞懂!
合集 · 动画图解技术 (15)
-
Redis缓存管理机制
5:50
-
Redis持久化存储机制
6:14
-
Redis哨兵与高可用原理
6:46
-
Redis集群是如何工作的?
4:41
-
一个动画搞懂MySQL索引原理!
6:53
-
可怕!CPU竟成为黑客帮凶!
6:20
-
完了!CPU一味求快出事儿了!
6:39
-
Linux如何调度进程?大学老师不讲的,看完动画秒懂!
10:40
-
HTTPS真的安全吗,一个动画秒懂!
6:47
-
劫持TCP连接,这操作太骚了!
6:28
-
CPU被挖矿,Redis竟是内鬼!
5:59
-
CPU深夜狂飙,真相让人傻眼了!
5:10
-
一个整数+1,攻破Linux系统内核!
6:31
-
天天写程序,连调试器工作原理都不懂?一个动画帮你搞懂!
6:24
-
哈希表哪家强,几大编程语言吵起来了!
5:05
Description
给程序下断点的背后,原来还有这么多小知识呢~今天又是涨知识的一天
Comments
原来是这样啊,我还真好奇过调试器是怎么做到的
♥ 64 ↩ 4
这个好,之前面试字节被问到过有没有了解过gdb怎么做的
♥ 50 ↩ 4
顺便把反调试的一些技术实现介绍下呗。
♥ 44 ↩ 8
学会了[doge]
♥ 40 ↩ 1
知道当前的栈和入栈地址不断往前回溯
♥ 36 ↩ 1
所以调试都是依赖CPU硬件,还以为是纯软件实现的
♥ 23 ↩ 14
好吧,看到调试器第一反应:int 3 (鉴定为:《汇编语言》受害者)
♥ 12
bt命令查看栈应该是通过查栈帧表,这个链表是每次函数调用都会在栈分布的一块区域,而bt的执行过程是用指针寄存器rbp,一个个栈帧查,取出返回地址rip,根据符号表,在gdb返回出对应的行数信息,直到rbp为0,或者栈顶越界。堆是动态分配的区域,通过指令malloc实现,应该是看不到的
♥ 11 ↩ 1
执行栈反查就是倒着遍历调用栈(x86)内存取栈帧。该方法仅x86有效,ARM的调用栈就比较烦(因为栈帧可能不在了),以前写过一个。
♥ 10 ↩ 3
谁知道ARM V9指令集 有几个debug register ?[doge]
♥ 9 ↩ 2
使用vs下数据断点的时候,下了四个再继续添加就会提示“无法设置断点。已设置数据断点的最大数目”。是不是就是因为只有DR0到DR3四个调试寄存器用来监视内存。那为什么DR5,DR6不能使用呢
♥ 6 ↩ 1
统一回复,动画用的keynote做的
♥ 5 ↩ 2
那单片机上的gdb调试是怎么实现的呢
♥ 5 ↩ 12
懂了[doge_金箍]就是这样这样,然后再那样那样,最后踉踉跄跄,就,就,what happened?
♥ 5 ↩ 1
看了两遍,略微吸收了一些知识,保存下来慢慢看。 另外想请教一下,@轩辕的编程宇宙 UP,对于x64的系统/CPU,调试寄存器是扩展了数量和对应的功能吗?
♥ 3 ↩ 1
您好,可以问一下这样的动画是如何制作的嘛,感觉好流畅
♥ 2 ↩ 2
OpenOCD
♥ 2
终于知道为啥在内存下读写断点要叫硬件断点了[支持]
♥ 2
那是怎么将cpu指令与对应代码关联起来的呀
♥ 2 ↩ 6