在gdb C ++中打印双向量的和

在GDB中调试时可以打印双精度矢量的和吗? 我知道矢量的值可以通过*(vec._M_impl._M_start)@N打印出来,但是我只想对大数组进行求和操作。 一种解决方案是编写C ++函数并在GDB中调用它。 其他更简单的解决方案


它可以通过gdb脚本完成,但我认为编写c ++函数并调用它是更好的解决方案。

尽管如此,脚本(通过使用STL支持工具并修改它创建)如下所示:

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: %fn", $sum
end

所以,你需要通过gdb -x abovesctipt.gdb myexecutable之类的东西来启动gdb,然后打印sum do pvecsum name_of_vector。

免责声明:我不知道打印结果与通过类似c ++函数获得的结果有多接近。

链接地址: http://www.djcxy.com/p/24377.html

上一篇: Printing sum of double vector in gdb C++

下一篇: Assigning to the real or imaginary part of a complex number in C