我必须使用gdb调试程序。该程序使用gcc编译调试选项。 我的问题是源不在我用来调试和运行该程序的同一台机器上。我无法使用远程gdb调试。有没有办法在gdb中推进行/文件位置?这个问题还有其他解决方案吗?
由于
答案 0 :(得分:1)
如果您遇到segmentation fault
,可以通过启用它来在linux机器上使用核心转储
ulimit -c unlimited
然后将核心转储文件传输到您已获得源的另一台计算机,并使用coredump文件运行gdb,以确定代码中您获取分段错误的位置。
答案 1 :(得分:1)
您可以使用汇编代码对其进行调试。
objdump -d
显示所有内容。然后在gdb
函数处运行main
,并在ni
运行display $pc
以运行下一条指令(程序集)。哦,不要忘记启用restore to C code
会帮助你。
以上建议仅适用于玩具代码。
如果您已安装IDA(和插件),则可以使用其{{1}}功能。
答案 2 :(得分:0)
我在gdb中找到了info line
命令,它显示了源文件中的位置,即使gdb没有找到源文件。这个解决方法对我来说似乎没问题。