我最近一直在尝试在我的树莓派(模型 b)上使用 valgrind 调试分段错误,运行 Debian GNU/Linux7.0(wheezy)。每次我在已编译的 C++ 程序上运行 valgrind 时,都会得到如下信息:
disInstr(arm): unhandled instruction: 0xF1010200
cond=15(0xF) 27:20=16(0x10) 4:4=0 3:0=0(0x0)
valgrind: Unrecognized instruction at address 0x4843638.
at 0x4843638: ??? (in /usr/lib/arm-linux-gnueabihf/libconfi_rpi.so)
然后是正常的 valgrind 东西,导致 SIGILL 并终止我的程序。起初我认为我的程序中存在一些内存泄漏,导致它将一段非指令内存作为指令执行,但后来我运行了以下 hello world 代码,得到了相同的结果。
#include <iostream>
using namespace std;
int main() {
cout<<"Hello World"<<endl;
return 0;
}
不可能有内存泄漏/段错误,那为什么会给我这个错误?我对 valgrind 很陌生,但我用最基本的valgrind ./a.out
.