我正在尝试在 rhel6 64 位 VM 系统上设置 insight 调试器: uname -a Linux lb-cam-bca-devel 2.6.32-358.23.2.el6.x86_64 #1 SMP Sat Sep 14 05:32:37 EDT 2013 x86_64 x86_64 x86_64 GNU/Linux
我已经下载了源代码 - insight-6.8-1a.tar.bz2,从 ftp://sourceware.org/pub/insight/releases 获得, 配置、构建和安装。
我可以运行 insight,但是当我尝试设置断点时,它们不会被击中。
这是我尝试过的: 1) 通过在程序集 View 上单击鼠标来设置断点,然后从 GUI 中选择“运行”。可执行文件运行到最后。控制台 View 上的输出是“程序正常退出。”
2) 通过鼠标单击源代码设置断点,然后从 GUI 中选择“运行”。 Insight 窗口全部消失(崩溃?)。 “段错误”输出到终端。
3) 从 GUI 中删除默认断点,并从控制台窗口中的 gdb 命令行设置断点。输入 r 运行。 Insight 窗口全部消失(崩溃?)。 “段错误”输出到终端。
如果我只是从终端运行 gdb,我可以设置断点并逐步执行源文件。
我正在调试的文件是一个简单的 asm 脚本,摘自一本书(Assembly Language Step By Step)。
我用来构建文件的命令是: nasm -f elf64 -g -F dwarf eatsyscall.asm ld -o eatsyscall eatsyscall.o
我用来打开 insight 的命令是: 洞察 eatsyscall
有人知道这里会发生什么吗?或者有人可以建议我如何调试这个问题吗?我现在有点卡住了。
我在网上看到的与此行为最接近的报道如下: osdir.com/ml/debugging.insight/2008-09/msg00001.html
但我的案例中没有涉及共享库。
最佳答案
我有同样的问题,要解决使用 dwarf 作为调试信息格式,即将代码(如果使用 nasm)组装为
nasm -f elf -g -F dwarf anyfile.asm
(-g
的格式默认设置为“stabs”,但 gdb 更好地理解 dwarf,您可以使用 -F
开关更改它)
现在将目标代码链接为(如果使用 gnu 的链接器)
ld -o executable_name anyfile.o
使用 dwarf 作为调试格式,您现在可以设置断点。
关于linux - 洞察调试器断点不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28433031/