加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

在gdb C中打印双向量的和

发布时间:2020-12-16 07:06:14 所属栏目:百科 来源:网络整理
导读:在GDB中调试时是否可以打印双精度矢量的总和? 我知道矢量的值可以通过*(vec._M_impl._M_start)@N打印,但我只想要大量数组的总和可以做什么?一种解决方案是编写C函数并在GDB中调用它.还有其他更简单的方法 解决方法 它可以通过gdb脚本完成,但我认为编写c函
在GDB中调试时是否可以打印双精度矢量的总和?
我知道矢量的值可以通过*(vec._M_impl._M_start)@N打印,但我只想要大量数组的总和可以做什么?一种解决方案是编写C函数并在GDB中调用它.还有其他更简单的方法

解决方法

它可以通过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: %fn",$sum
end

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读