gdb 多线程和多进程调试


多进程调试


  • info inferiors : 显示当前的多进程信息. 前面有 * 表示当前调试的进程

在这里插入图片描述


  • inferiors num : 指定当前调试的进程. num表示当前跳转到调试的进程番号.

    如果要调试子进程的话, 可以用 ps 命令查看在使用该命令执行指定进程的调试

gdb 多线程和多进程调试_第1张图片

  • set|show follow-fork-mode

    • show follow-fork-mode : 显示当前运行的模式 (先调试父进程还是子进程), 默认是调试父进程

在这里插入图片描述

-   `show follow-fork-mode` : 设置当前先调试的(子或父)进程.

  • set detach-on-fork on|off
    • on : 多个进程同时运行(默认). 而调试的进程默认以 show follow-fork-mode 决定.
    • off : 关闭多进程同时运行. 只有一个默认进程在调试中运行. 一般我们在多进程中就会设置该属性.

  • set follow-exec-mode new|same

    • new : 新建一个 inferior 给执行起来的子进程. 即子进程的编号将会改变

在这里插入图片描述

-   **same** : 子进程的编号不会发生改变

-   `show follow-exec-mode` : 可以通过该命令查看 `follow-exec-mode` 的模式.

多线程调试

  • info threads : 所有线程. * 表示当前调试的线程

    在这里插入图片描述


  • thread ID : 指定当前调试的线程号

gdb 多线程和多进程调试_第2张图片


  • set scheduler-locking off|on|step
    • off : 不锁定任何线程所有线程都执行(默认).
    • on : 只有当前被调试程序会执行, 其他线程全部暂停.
    • step : 单步调试中. 只有当前线程会执行.

输出问题

有时我们需要输出一个字符串的所有长度, 但是就如同下面一样, 只会输出一部分数据.

在这里插入图片描述


  • show print elements : 可以查看默认输出的字符个数, 一般默认是 200字符

    在这里插入图片描述

  • set print elements 0 : 设置无限制输出

    在这里插入图片描述

    在这里插入图片描述


小结

这里仅仅只是归纳了部分常用的调试命令, 有兴趣的还是去看看gdb文档吧.

你可能感兴趣的:(网络编程)