如何使用3.18内核在没有“程序接收信号SIGILL”的情况下进行调试(3.12工作)?


10

我试图在Raspbian中用gdb调试程序,但是得到的只是:

Program received signal SIGILL, Illegal instruction.
0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3

SIGILL句柄设置为nostophandle SIGILL nostop)没有帮助:

Program received signal SIGILL, Illegal instruction.

Program terminated with signal SIGILL, Illegal instruction.
The program no longer exists.

我得到的所有回溯是:

#0  0xb6fe8acc in ?? () from /lib/ld-linux-armhf.so.3
#1  0x00000000 in ?? ()

如果我在gdb之外启动程序,则会收到一个普通的C ++异常(我想调试)。

所有软件已从raspbian存储库更新为最新版本。此外,我尝试了raspberry pi基础内核“ 3.18.9+”,还尝试了raspbain内核“ 3.18.0-trunk-rpi”(我需要一些自定义内核模块)。我可以在主机上调试相同的程序,而不会出现任何问题。

更新:使用内核“ 3.12-1-rpi”时,调试可以按预期进行。

是什么导致此错误?


你试过了handle SIGILL pass nostop吗?
mpromonet

@mpromonet由于pass默认情况下已设置,因此它不会有所不同,也不会造成任何影响。与handle SIGILL nostop
someonr 2015年

而且没有有意义的回溯(bt)吗?我认为如果您真的希望有人解释“是什么原因导致此错误?”,则需要考虑在此处提供更多的上下文。仅基于链接器/加载器(ld-linux-armhf)中的非法指令。
goldilocks

我无法获得任何有意义的回溯(请参阅已编辑的问题)。我将尝试创建一个小例子。另外,我很困惑没有gdb就不会得到非法的操作码。
someonr 2015年

1
堆栈似乎被砸碎,valgrind可以帮助吗?
mpromonet 2015年

Answers:


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.