gdb面试题2-2-1:如何使用gdb调试多线程程序

Ladies and gentlemen, 今天我们来说工具常考的第2个面试题:“ gdb如何调试多线程程序”的第2小节, 这个话题一共是4个小节。
【【快手/腾讯面试题】gdb面试题2-2-1 如何使用gdb调试多线程程序-多线程调试基础技能:查看线程信息 切换线程 切换到某层调】 https://www.bilibili.com/video/BV1dN4y1f7ng/?share_source=copy_web&vd_source=1de4bbd746d463f3e044efb880331206

B站视频链接

  1. 代码准备和熟悉
  2. 调试程序的技能点
  3. 查看线程信息
  4. 切换线程
  5. 切换到某层调用堆栈
  6. 理解调度器锁模式
    1. 查看和设置调度器锁
    2. 测试调度器锁为step模式
  7. 多线程调试崩溃的例子
  8. 多线程调试死锁的例子

本小结思路:

  1. 查看线程信息
  2. 切换线程
  3. 切换到某一层堆栈

  1. 查看线程信息
info threads
(gdb) info threads
[New Thread 0x7ffff6fef700 (LWP 3636)]
  Id   Target Id         Frame 
  3    Thread 0x7ffff6fef700 (LWP 3636) "thread_gdb" 0x00007ffff7bcd51c in __lll_lock_wait_private () from /lib64/libpthread.so.0
* 2    Thread 0x7ffff77f0700 (LWP 3635) "thread_gdb" thread_entry_funcA (arg=0x0) at thread_gdb.c:8
  1    Thread 0x7ffff7fec740 (LWP 3631) "thread_gdb" 0x00007ffff78efad1 in clone () from /lib64/libc.so.6
  1. 切换线程
t [线程ID]
(gdb) t 1
[Switching to thread 1 (Thread 0x7ffff7fec740 (LWP 3631))]
#0  0x00007ffff78efad1 in clone () from /lib64/libc.so.6
(gdb) t 2
[Switching to thread 2 (Thread 0x7ffff77f0700 (LWP 3635))]
#0  thread_entry_funcA (arg=0x0) at thread_gdb.c:8
8               printf("[thread_entry_funcA]: %d\n", i);
  1. 切换到某一层堆栈
f [堆栈号]
(gdb) f 0
#0  thread_entry_funcA (arg=0x0) at thread_gdb.c:8
8               printf("[thread_entry_funcA]: %d\n", i);

下一小结内容:理解调度器锁模式

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值