Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/143.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何以编程方式标识GDB中打印的线程ID 我尝试调试一个C++编写的应用程序,编译为一个运行Linux的ARM处理器。p>_C++_Linux_Eclipse_Gdb_Armv7 - Fatal编程技术网

如何以编程方式标识GDB中打印的线程ID 我尝试调试一个C++编写的应用程序,编译为一个运行Linux的ARM处理器。p>

如何以编程方式标识GDB中打印的线程ID 我尝试调试一个C++编写的应用程序,编译为一个运行Linux的ARM处理器。p>,c++,linux,eclipse,gdb,armv7,C++,Linux,Eclipse,Gdb,Armv7,当应用程序间歇性崩溃时,它会在某个线程处停止,我假设线程在故障所在的位置(分段故障) 我的问题是,我很难识别这个线程是什么。当GDB运行时,我看到以下内容在eclipse中打印出来 蓝色下划线的数字是什么?我是否有办法通过编程访问它们,以便知道代码中的位置 根据@Selcuk Cihan在上述评论中发布的信息,方括号内的第一个数字是GDB本身分配的整数标识符,另一个是分配给线程的SysTag。除了答案 您还可以访问程序内部的线程id,它是一个较大的数字 UNIX: #包括 syscall(SYS

当应用程序间歇性崩溃时,它会在某个线程处停止,我假设线程在故障所在的位置(分段故障)

我的问题是,我很难识别这个线程是什么。当GDB运行时,我看到以下内容在eclipse中打印出来

蓝色下划线的数字是什么?我是否有办法通过编程访问它们,以便知道代码中的位置

根据@Selcuk Cihan在上述评论中发布的信息,方括号内的第一个数字是GDB本身分配的整数标识符,另一个是分配给线程的SysTag。

除了答案

您还可以访问程序内部的线程id,它是一个较大的数字

UNIX:

#包括
syscall(SYS_getid);
WINDOWS:(未测试)

#包括
GetCurrentThreadId();

如果您使用的是Linux/gcc,那么更好的解决方案是使用。然后,gdb将在命中断点时使用此名称,以此类推。请注意,这是pthreads的GNU扩展。

为什么不在生成线程时为它们命名?@SelçukCihan这也会显示在GDB中吗?GDB可以显示线程名称,查看更多信息非常感谢。。这对我来说很有用。
#include <sys/syscall.h>
syscall(SYS_gettid);
#include <windows.h>
GetCurrentThreadId();