是否可以从GDB中的外部文件中将命令注册到断点?
GDB允许通过是否可以从GDB中的外部文件中将命令注册到断点?,gdb,Gdb,GDB允许通过commands NUM语法将一组命令注册到特定断点。我需要使用如下语法,通过外部文件注册特定断点的命令集: commands ./main.c:18 silent print buffer[0] cont end commands ./io.c:29 silent printf "Hello world %i\n", myvar1 cont end 命令路径/to/file:XX语法由我自己编写。由于commands NUM中的NUM语法需要断点的运行时I
commands NUM
语法将一组命令注册到特定断点。我需要使用如下语法,通过外部文件注册特定断点的命令集:
commands ./main.c:18
silent
print buffer[0]
cont
end
commands ./io.c:29
silent
printf "Hello world %i\n", myvar1
cont
end
命令路径/to/file:XX
语法由我自己编写。由于commands NUM
中的NUM
语法需要断点的运行时ID号(由GDB分配),因此我不能使用确定性语法来实现此目的
我目前正在通过包含以下内容的文本文件注册断点:
break ./main.c:18
break ./io.c:29
然后在GDB内部发出sourcebreakpoints.txt
命令。在注册断点时,似乎无法同时注册命令
:
(gdb)帮助突破
在指定的行或函数上设置断点。
断开[PROBE_MODIFIER][LOCATION][THREADNUM][if CONDITION]
如果命令要放在一个命令行中,则应出现PROBE_修饰符
探测点。接受的值为-probe'(对于一般的、自动猜测的探针类型)、
-probe stap'(对于SystemTap探针)或
`-probe dtrace'(对于dtrace探测器)。
位置可以是行号、函数名或“*”和地址。
如果指定了行号,请在该行代码的开头断开。
如果指定了一个函数,则在该函数的代码开始处中断。
如果指定了地址,请在该确切地址处断开。
如果没有位置,则使用选定对象的当前执行地址
堆叠框架。这对于返回堆栈帧时断开非常有用
THREADNUM是“信息线程”中的数字。
条件是一个布尔表达式
允许在一个位置上有多个断点,如果断点
情况不同
问题:
(gdb)信息断点
输出传递到文件或程序?目前,我正在尝试一种解决方法,为此目的使用该功能:NUM
的情况下使用命令
,则这些命令将应用于最后一个断点集。所以你想要的是:
break main.c:18
commands
silent
print buffer[0]
cont
end
break main.c:18
commands
silent
print buffer[0]
cont
end