gpt4 book ai didi

gdb - 有什么办法告诉gdb等待进程启动并附加到它?

转载 作者:行者123 更新时间:2023-12-03 08:41:08 25 4
gpt4 key购买 nike

我有一个被另一个过程调用的过程,另一个过程又调用了另一个过程,等等。这是长工具链中的子过程。

这个过程崩溃了。

我想在gdb中捕获此过程以了解其崩溃的原因。但是,我唯一想到的方法是:

  • 在命令行中启动原始父进程。
  • 轮询ps -C <name process I want to catch>并获取PID。
  • 启动gdb,附加到该进程的PID。

  • 这很麻烦,但通常可以完成工作。问题在于当前故障运行非常快,并且当我捕获PID并启动gdb时,它已经通过了故障点。

    我想启动gdb而不是:
    (gdb) attach <pid>

    我想要做:
    (gdb) attach <process name when it launches>

    有什么办法吗?

    我在Linux上使用gdb 7.1

    最佳答案

    这是我的脚本gdbwait:

    #!/bin/sh
    progstr=$1
    progpid=`pgrep -o $progstr`
    while [ "$progpid" = "" ]; do
    progpid=`pgrep -o $progstr`
    done
    gdb -ex continue -p $progpid

    用法:
    gdbwait my_program

    当然可以写得更好,但是Bourne shell脚本语法对我来说很痛苦,因此如果可行,我就不用管它了。 :)
    如果新进程启动且死机太快,请在您自己的程序中添加1秒的延迟以进行调试...

    关于gdb - 有什么办法告诉gdb等待进程启动并附加到它?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4382348/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com