The*_*ere 3 c++ debugging multithreading gdb
当我在GDB中遇到断点时,我需要找出它在什么线程上,我就这样做了info thr。这会打印出我程序中所有线程的列表,并且当前线程被标记为*
而不是让GDB转储整个线程列表,然后手动读取哪个线程具有*,gdb中是否有一条命令可以简单地打印出当前线程?
我需要这个,因为我在程序中记录了一些行为。换句话说,我有这样的东西-
(gdb) command 12
>> p " xyz just happpened"
>> whatThreadIsThis // I would like this
>> c
>> end
Run Code Online (Sandbox Code Playgroud)
如果GDB实现了类似whatThreadIsThis命令的内容,那么我可以使用GDB记录xyz的所有出现及其发生的线程。
gdb 还有便利变量。其中之一是:
$_thread
The thread number of the current thread.
Run Code Online (Sandbox Code Playgroud)
您可以使用以下命令打印它:
(gdb) p $_thread
$2 = 2
Run Code Online (Sandbox Code Playgroud)
它还可以在以下条件下使用:
condition 1 $_thread != 1
Run Code Online (Sandbox Code Playgroud)
您可以使用“ thread thread-id”命令切换到另一个线程,如文档所述。文档似乎没有提到的是,没有任何参数,它仅显示当前线程:
(gdb) thread
[Current thread is 1 (Thread 0x7ffff7fc2700 (LWP 4641))]
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1084 次 |
| 最近记录: |