GDB显示线程信息的时候为什么线程函数全部显示为问号
通过GDB server和 arm-linux-gdb调试程序.当用 info threads命令显示线程信息时,得到如下,函数全是问号.
(gdb) info threads
[New Thread 1523]
[New Thread 1524]
[New Thread 1525]
[New Thread 1526]
[New Thread 1527]
[New Thread 1528]
[New Thread 1529]
Id Target Id Frame
8 Thread 1529 0x40120cc4 in ?? ()
7 Thread 1528 0x40120cc4 in ?? ()
6 Thread 1527 0x40120cc4 in ?? ()
5 Thread 1526 0x40120cc4 in ?? ()
4 Thread 1525 0x40120cc4 in ?? ()
3 Thread 1524 0x40120cc4 in ?? ()
2 Thread 1523 0x40120cc4 in ?? ()
* 1 Thread 1512 0x4003b384 in ?? ()
(gdb)
打印堆栈的时候: inc_can1_run ()为线程函数.
(gdb) bt
#0 can1_get_send_cmd (pT_send_cmd=0x484cc <g_t_can1_send_cmd_buff>,
pPolling_round=0x48340 <g_can1_sendPackNum>) at IncCan1Update.c:868
#1 0x00012fde in inc_can1_packet_send () at IncThreadCan1.c:113
#2 0x00013150 in inc_can1_run () at IncThreadCan1.c:245
#3 0x40033ed2 in ?? ()
#4 0x40033ed2 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
(gdb) info threads
[New Thread 1523]
[New Thread 1524]
[New Thread 1525]
[New Thread 1526]
[New Thread 1527]
[New Thread 1528]
[New Thread 1529]
Id Target Id Frame
8 Thread 1529 0x40120cc4 in ?? ()
7 Thread 1528 0x40120cc4 in ?? ()
6 Thread 1527 0x40120cc4 in ?? ()
5 Thread 1526 0x40120cc4 in ?? ()
4 Thread 1525 0x40120cc4 in ?? ()
3 Thread 1524 0x40120cc4 in ?? ()
2 Thread 1523 0x40120cc4 in ?? ()
* 1 Thread 1512 0x4003b384 in ?? ()
(gdb)
打印堆栈的时候: inc_can1_run ()为线程函数.
(gdb) bt
#0 can1_get_send_cmd (pT_send_cmd=0x484cc <g_t_can1_send_cmd_buff>,
pPolling_round=0x48340 <g_can1_sendPackNum>) at IncCan1Update.c:868
#1 0x00012fde in inc_can1_packet_send () at IncThreadCan1.c:113
#2 0x00013150 in inc_can1_run () at IncThreadCan1.c:245
#3 0x40033ed2 in ?? ()
#4 0x40033ed2 in ?? ()
Backtrace stopped: previous frame identical to this frame (corrupt stack?)
(gdb)
...全文
相关推荐
gdb调试多线程程序总结
gdb调试多线程程序总结 gdb调试多线程程序总结
GDB 多线程调试基本命令
一直对 GDB 多线程调试接触不多,最近因为工作有了一些接触,简单作点记录吧。 先介绍一下 GDB 多线程调试的基本命令。
使用GDB调试多线程实例详解
先写一段多线程程序。 makefile 加上 -g参数生成可调式信息, 可以进行调试。 pthread不是Linux下的默认的库,也就是在链接的时候,无法找到phread库中哥函数的入口地址,于是链接会失败。在gcc编译的时候,附加要加 -lpthread参数即可解决。 gdb test 进入调试 需要调试的地方打下断点,run运行到断点处。 r 运行到断点处,info thread可以查看被调试的线程。 thread apply all bt 让所有线程打印堆栈信息 set scheduler-locking off|on|step 在使用step或continu
GDB调试多线程
段错误不好调试,在于不好定位,GDB可以生成core文件。但是有时候,无法生成core文件,需要添加断点逐步调试,多进程不容易追踪到子进程,根据文档中的步骤,可以跟踪子进程。
GDB多线程调试
GDB 多线程 调试 线程切换 Core调试


