当我在GDB中遇到断点时,我需要找出它所在的线程,我做info thr
。这打印出我程序中所有线程的列表,当前线程标有*
而不是让GDB转储整个线程列表,然后手动读取具有*
的线程,gdb中是否有一个命令只打印出当前线程?
我需要这个,因为我在我的程序中记录了一些行为。换句话说,我有类似的东西 -
(gdb) command 12
>> p " xyz just happpened"
>> whatThreadIsThis // I would like this
>> c
>> end
如果GDB实现类似whatThreadIsThis
命令的东西,那么我可以使用GDB记录所有出现的xyz及其发生的线程。
答案 0 :(得分:5)
您可以使用"主题thread-id"命令切换到文档提到的另一个线程。文档似乎没有提到的是,没有任何参数,它只是打印当前线程:
(gdb) thread
[Current thread is 1 (Thread 0x7ffff7fc2700 (LWP 4641))]
答案 1 :(得分:1)
gdb也有Convenience Variables。 其中之一是:
$_thread
The thread number of the current thread.
您可以使用以下命令进行打印:
(gdb) p $_thread
$2 = 2
还可以在以下条件下使用:
condition 1 $_thread != 1