展开GDB变量以在循环中使用(使用dprintf)?

展开GDB变量以在循环中使用(使用dprintf)?,gdb,Gdb,我想通过打印出函数执行的每一行来跟踪函数的执行情况-在gdb中,我可以使用dprintf。由于它是一个大函数(从myFile.cpp中的第113行到第200行),因此我提出了以下循环,在函数的每一行上设置dprintf类型断点: set $n=113 while ($n<200) dprintf myFile.cpp:$n, " myFile:testF %d\n", $n set $n=$n+1 end 。。。但是,if不适用于相应的dprintf格式字符串,因为gdb变量$n没有扩展

我想通过打印出函数执行的每一行来跟踪函数的执行情况-在
gdb
中,我可以使用
dprintf
。由于它是一个大函数(从myFile.cpp中的第113行到第200行),因此我提出了以下循环,在函数的每一行上设置
dprintf
类型断点:

set $n=113
while ($n<200)
dprintf myFile.cpp:$n, " myFile:testF %d\n", $n
set $n=$n+1
end
。。。但是,if不适用于相应的
dprintf
格式字符串,因为
gdb
变量
$n
没有扩展为数字字符串,这正是我想要的


那么是否有任何方法可以扩展
$n
变量,使得
dprintf
的结尾类似于:
printf“myFile:testF%d\n”、113
printf“myFile:testF%d\n”、114
,等等?

事实证明,有一个
eval
函数()可以帮助实现这一点-循环应该这样重新编写:

set $n=113
while ($n<200)
eval "dprintf myFile.cpp:%d, \" myFile:testF %d\"", $n, $n
set $n=$n+1
end
。。。等等,我想这就是我所需要的

set $n=113
while ($n<200)
eval "dprintf myFile.cpp:%d, \" myFile:testF %d\"", $n, $n
set $n=$n+1
end
1       dprintf        keep y   0x080a7272 in namespace::myFile::testFunc(int&) 
                                           at /path/to/myFile.cpp:113
        printf " myFile:testF 113"