我正在使用GNUEABI远程调试ARM设备,我可以设置断点,步进,查看内存等。
......一般生活都很好
但是当任意中断然后输入'info threads'时我会得到一个线程列表,但这些符号没有解析
例如
(gdb) info threads
7 Thread 10283 0x402a42a4 in ?? ()
6 Thread 10282 0x402a42a4 in ?? ()
5 Thread 10281 0x401c9d68 in ?? ()
4 Thread 10280 0x401c9d68 in ?? ()
3 Thread 10279 0x401cb3f4 in ?? ()
*2 Thread 10278 0x401cb294 in ?? ()
1 Thread 10195 0x0001c5e0 in ?? ()
如果我设置一个断点然后等待它击中所有线程,但是带断点的那个将如上所述,但带断点的线程将解析
如果我尝试检查其中一个线程的回溯,我看到的就是这样的
(gdb) bt
#0 0x003d0f00 in ?? ()
#1 0x0000027f in ?? ()
#2 0x00000277 in ?? ()
#3 0x4360c4e0 in ?? ()
Backtrace stopped: previous frame inner to this frame (corrupt stack?)
注意:我不认为堆栈已损坏,而我认为gdb认为堆栈已损坏与问题有关并且可能是提示?
想法? - 请记住,当断点击中调用堆栈时看起来很棒。
答案 0 :(得分:-1)
您是否有理由期望这些线程执行您的代码?很多时候,线程正在运行库代码或休眠,在任何一种情况下,它们都没有运行代码。但是,当您在代码中设置断点时,只有当该线程实际运行您的代码时才会触发该断点。
我敢打赌,你会在某些堆栈跟踪上看到一些代码。看看这个;这将是启发。