在GDB中调试时是否可以打印双精度矢量的总和? 我知道矢量的值可以通过*(vec._M_impl._M_start)@N打印,但我只想要大量数组的总和可以做什么?一种解决方案是编写C ++函数并在GDB中调用它。还有其他更简单的解决方案吗?
答案 0 :(得分:1)
可以通过gdb脚本完成,但我认为编写c ++函数并调用它是更好的解决方案。
尽管如此,脚本(通过STL support tools创建并修改它)是这样的:
define pvecsum
set $sum = 0
set $size = $arg0._M_impl._M_finish - $arg0._M_impl._M_start
if $argc == 1
set $i = 0
while $i < $size
set $sum = $sum + *($arg0._M_impl._M_start + $i)
set $i++
end
end
printf "sum of elements: %f\n", $sum
end
所以,你需要通过 gdb -x abovesctipt.gdb myexecutable 之类的东西启动gdb,然后打印sum do pvecsum name_of_vector 。
免责声明:我不知道打印结果与类似c ++函数获得的结果有多接近。