我在使用静态编译的QEMU臂版本时遇到问题。我正在尝试从嵌入式设备调试应用程序。除了其他线程上的断点之外,其他所有东西似乎都可以正常工作。我正在使用IDA远程gdb函数进行调试。而不是在这里中断

它给了我一个SIGTRAP并转到这里
使用硬件断点也无法解决问题。似乎不是IDA本身。
我使用的是qemu-arm-static版本2.0.0。 IDA似乎有我上面提到的错误。使用命令行gdb-multiarch尝试调试它,在遇到断点后出现以下错误:

我从这里得到的2.8.0版本

评论

这可能是与IDA相关的问题。也请考虑交叉发布到他们的支持渠道。

@Nordwald您是要联系他们的支持吗?

@Nordwald我认为这不是与IDA相关的问题。这可能是QEMU问题,也可能是gdb问题。我已经在上面编辑了我的问题。

在这种情况下,这些报告是否相关? sourceware.org/bugzilla/show_bug.cgi?id=17700 sourceware.org/bugzilla/show_bug.cgi?id=17379

@Nordwald第一个可能是相关的,因为Web服务器可能在新线程中处理请求。我的应用程序也是Web服务器,但实际上不是。它不会从文件系统获取文件,它只会创建一些已定义的响应

#1 楼

QEMU用户模式仿真(例如qemu-armqemu-arm-static)不支持同时调试多个线程。

必须使用qemu-arm-system并运行整个ARM内核。

另外,您的QEMU和GDB已经过时了。我建议更新:


QEMU / qemu-static。最新版本是2.10.1。 QEMU 2.0.0已使用三年以上了。

gdb / gdb-multiarch / gdbserver。最新版本是8.0.1。 GDB 7.7已经使用了三年以上。

最后,如果您不需要同时调试多个线程,则可以使用

set detach-on-fork off

set follow-fork-mode [parent|child]适当