Linux gdb调试多进程程序和多线程程序

概 述

服务端程序不可避免的会使用gdb来调试程序,有关gdb调试的基础内容,可以参考Linux gdb调试。本文介绍使用gdb调试多进程程序和多线程程序

gdb 调试多进程程序

1. 单独调试子进程
单独调试子进程比较简单,通过目标子进程的PID,attach到gdb调试器上。

2. 使用调试器选项
gdb提供follow-fork-mode选项,在程序执行到fork系统调用时,允许我们选择继续调试父进程还是子进程,用法如下:

(gdb) set follow-fork-mode mode

mode可选值如下:

  • parent:表示调试父进程
  • child:表示调试子进程

gdb 调试多线程程序

gdb提供了一组命令用于辅助多线程程序的调试,这里列举常用的:

info threads
用于显示可调式的所有线程。gdb会为每个线程分配一个ID,我们可以使用这个ID来操作对应的线程。ID前带有 * 号的线程是当前被调试的线程。

thread ID
用于调试目标ID指定的线程。

set scheduler-locking [ off|on|step ]
用于设置其他线程的执行情况,可选值如下:

  • off:表示不锁定任何线程,即所有线程都继续执行。默认值
  • on:表示只有当前被调试的线程会继续执行
  • step:表示在单步执行时,只有当前被调试的线程会执行
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容