抱歉英语不是我的第一语言。
在 GDB 中设置断点时我注意到了一些事情。如果未加载符号,它们似乎会被忽略。
我发现当完全没有加载任何符号时 GDB 的行为很奇怪,如果我想调试某些东西,我必须在__libc_start_main@plt和nexti上设置断点,直到我到达主二进制文件。我还注意到我也无法在主二进制文件中反汇编(我收到这条奇怪的消息“没有函数包含所选帧的程序计数器。 ”),但除此之外,断点基本上被忽略了。我找到了一个奇怪的解决方法,那就是设置
set *0x56555878 = 0xcc
我的问题是:
- 为什么 GDB 在没有符号的情况下表现得如此奇怪?
- 为什么 normal for 断点无法识别?
- 将我想要的断点设置为 0xcc 然后休息;这是一个好习惯吗?
- 有没有更好的方法来设置断点?
- 为什么没有符号就不能拆卸 为什么没有符号就不能拆卸?
编辑:看起来我不能在 glibc 中设置 *breakpoints 但是当我进入 int main() 程序时我可以,但是在 int main() 中,我失去了反汇编的能力。