GDB如何确定它是否连接或实际运行一个进程?

GDB如何确定它是否连接或实际运行一个进程?,gdb,Gdb,有时我使用“-pid”命令参数运行GDB,有时我使用GDB“运行”程序。如果我希望在这两种情况下都使用1个gdb命令文件,我会遇到一个问题,因为您无法继续未运行的进程,并且无法在进程运行时键入“run” 也就是说,这里有一个简单的命令文件: br main.c:30 commands p foo c end # what can i put here, so that the command file will work in both situations? 如果我将“run”放在命令文件中

有时我使用“-pid”命令参数运行GDB,有时我使用GDB“运行”程序。如果我希望在这两种情况下都使用1个gdb命令文件,我会遇到一个问题,因为您无法继续未运行的进程,并且无法在进程运行时键入“run”

也就是说,这里有一个简单的命令文件:

br main.c:30
commands
p foo
c
end
# what can i put here, so that the command file will work in both situations?
如果我将“run”放在命令文件中,当我附加到一个进程时,它实际上会停止当前进程并运行一个新进程(我绝对不希望这样)。 如果我在命令文件中输入“c”,那么当我尝试使用“gdb--command=commandfile--args进程arg1 arg2”时,它会说“没有进程在运行”

这是很有用的,因为如果我有一组复杂的命令要使用,它很有用,可以灵活地在两个进程启动之前加载它们,也可以在已经运行的进程上加载它们,而无需在最后一行不同的地方保留两个精确的副本


谢谢。

您可以从Python访问此信息。具体地说,您希望获取次对象,然后检查其was_附加属性。例如,您可以使用它编写一个“run或continue”命令(用Python),然后从CLI使用它。

如果我有一个启用Python的gdb,我可能会这样做。我看到从gdb CLI来看,“信息劣势”相当有限。是否有其他方法获取was_附加属性?