Determining the correct thread to debug in GDB

后端 未结 2 870
感动是毒
感动是毒 2021-02-14 07:32

I\'ve run into some problems debugging a multi-threaded process using GDB. I have a multi-threaded process that splinters off into several (8 or 9) different threads, and I am t

相关标签:
2条回答
  • 2021-02-14 08:21

    I find myself doing this all the time:

    > t a a f
    

    Short for:

    > thread apply all frame
    

    Of course, other variants are possible:

    > t a a bt 3
    

    Which prints the bottom 3 frames of each thread's stack. (You can also use negative numbers to get the top N frames of the stack)

    0 讨论(0)
  • 2021-02-14 08:40

    You can use command thread or info threads to find out the current thread number after breakpoint hit

    (gdb) thread
    [Current thread is 1 (Thread 0xb790d6c0 (LWP 2519))]
    (gdb)
    
    (gdb) info threads
      17 Thread 0xb789cb90 (LWP 2536)  0xb7fc6402 in __kernel_vsyscall ()
      16 Thread 0xb769bb90 (LWP 2537)  0xb7fc6402 in __kernel_vsyscall ()
      15 Thread 0xb749ab90 (LWP 2543)  0xb7fc6402 in __kernel_vsyscall ()
      14 Thread 0xb7282b90 (LWP 2544)  0xb7fc6402 in __kernel_vsyscall ()
      13 Thread 0xb5827b90 (LWP 2707)  0xb7fc6402 in __kernel_vsyscall ()
      12 Thread 0xb5626b90 (LWP 2708)  0xb7fc6402 in __kernel_vsyscall ()
      11 Thread 0xb5425b90 (LWP 2709)  0xb7fc6402 in __kernel_vsyscall ()
      10 Thread 0xb5161b90 (LWP 2713)  0xb7fc6402 in __kernel_vsyscall ()
      9 Thread 0xb4ef9b90 (LWP 2715)  0xb7fc6402 in __kernel_vsyscall ()
      8 Thread 0xb4af7b90 (LWP 2717)  0xb7fc6402 in __kernel_vsyscall ()
      7 Thread 0xb46ffb90 (LWP 2718)  0xb7fc6402 in __kernel_vsyscall ()
      6 Thread 0xb44feb90 (LWP 2726)  0xb7fc6402 in __kernel_vsyscall ()
      5 Thread 0xb42fdb90 (LWP 2847)  0xb7fc6402 in __kernel_vsyscall ()
      4 Thread 0xb40fcb90 (LWP 2848)  0xb7fc6402 in __kernel_vsyscall ()
      3 Thread 0xb3efbb90 (LWP 2849)  0xb7fc6402 in __kernel_vsyscall ()
      2 Thread 0xb3cfab90 (LWP 2850)  0xb7fc6402 in __kernel_vsyscall ()
    * 1 Thread 0xb790d6c0 (LWP 2519)  0xb7fc6402 in __kernel_vsyscall ()
    (gdb)
    

    An asterisk `*' to the left of the gdb thread number indicates the current thread. See here.

    0 讨论(0)
提交回复
热议问题