是否有调试链接错误或使用GDB执行main()函数之前可能发生的任何错误?
答案 0 :(得分:4)
无论如何都要调试链接错误
大概是你在询问运行时链接错误(例如`错误:libfoo.so:没有这样的文件或目录'),而不是关于构建过程的(静态)链接步骤。
诀窍是在exit
或(Linux上的exit_group
)系统调用上设置断点,例如catch syscall exit
。然后,您将在放弃运行二进制文件的位置停在ld.so
内。
或使用GDB执行main()函数之前可能出现的任何错误?
任何其他类型的错误,例如SIGSEGV
可以“正常”调试 - 对于信号你根本不需要做任何事情 - GDB将停止。对于其他错误,只需像往常一样设置断点。
答案 1 :(得分:0)
在调试初始化代码的过程中(即使你没有符号)也是这样的:
gdb somebinary
GNU gdb(Ubuntu / Linaro 7.4-2012.04-0ubuntu2.1)7.4-2012.04 等
info file
来自“somebinary”的符号。
本地exec文件:
`/ somebinary',文件类型为elf64-x86-64。
入口点:0x4045a4等
break *0x4045a4
run
......断点1,0x00000000004045a4在? ()
从这里开始,你可以照常进行。