1

我正在尝试在 rhel6 64 位 VM 系统上设置洞察调试器: uname -a Linux lb-cam-bca-devel 2.6.32-358.23.2.el6.x86_64 #1 SMP Sat Sep 14 05:32:37美国东部时间 2013 x86_64 x86_64 x86_64 GNU/Linux

我已经下载了从ftp://sourceware.org/pub/insight/releases获得的源代码——insight-6.8-1a.tar.bz2,并进行了配置、构建和安装。

我可以提高洞察力,但是当我尝试设置断点时,它们并没有受到影响。

这是我尝试过的: 1) 通过鼠标单击程序集视图设置断点,然后从 GUI 中选择运行。可执行文件一直运行到最后。控制台视图上的输出是“程序正常退出”。

2) 通过鼠标单击源代码设置断点并从 GUI 中选择运行。洞察窗口全部消失(崩溃?)。“分段故障”输出到终端。

3) 从 GUI 中删除默认断点,并在控制台窗口的 gdb 命令行中设置断点。键入 r 运行。洞察窗口全部消失(崩溃?)。“分段故障”输出到终端。

如果我只是从终端运行 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

但是在我的案例中没有涉及共享库。

4

1 回答 1

1

我有同样的问题,要解决使用 dwarf 作为调试信息格式,即将代码(如果使用 nasm)组装为

nasm -f elf -g -F dwarf anyfile.asm

(的格式-g默认设置为“stabs”但gdb对dwarf的理解更好,你可以用-F开关改变它)

现在将目标代码链接为(如果使用 gnu 的链接器)

ld -o executable_name anyfile.o 

使用 dwarf 作为调试格式,您现在可以设置断点。

于 2015-06-21T10:23:26.480 回答