linux - 洞察调试器断点不起作用

标签 linux debugging assembly breakpoints insight

我正在尝试在 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/

相关文章:

c - 我应该如何开始编写设备驱动程序?

java - 如何编译由 Java 或 C++ 应用程序生成的代码

java - Docker 容器中的 OpenJDK 1.8.0 与/etc/timezone 和主机的时区不同

c - gcc 在指定路径中链接共享库,但不在标准路径中

c# - 如何调试 .NET Framework 源代码

函数返回字符数组的 C 问题

c++ - 如何在 C++ 中记录函数的堆栈返回地址

linux - make命令的参数

linux - 无法使用 Cron 作业删除 tar.gz 文件

c# - 自动从 C# 代码调试过程并读取寄存器值