c++问题的定位方式总结

一、功能问题

功能问题我建议用控制台输出或者打印日志的去定位会更加高效。首先先梳理一下程序的逻辑,然后在可能出错的位置添加打印信息的代码,然后查看打印出的信息是否符合预期即可。这样也会帮助我们更加熟悉程序的运行逻辑。

二、内存问题

1、当出现内存的问题时,我们采用GDB的调试方法更加高效。

2、另外还有一个Address Sanitizer可以快速检测内存错误的工具。用法如下:

(1)用-fsanitize=address选项编译和链接你的程序。

(2)运行编译出来的可执行文件,如果有地址访问越界、释放后再次使用变量、内存泄露等错误,就会有提示。

3、另外一个值得介绍的就是mprotect函数。

中心思想就是,设置内存访问权限,当写到不该它写的内容的时候,我们让操作系统通知我们,产生段错误Segmentation fault。

三、性能问题

当出现性能问题时,我们采用perf火焰图来定位这个问题:

(1)用 top 命令查看进程 PID。

(2)perf record 命令让 perf 工具记录下运行时的资源占用情况。

(3)perf report 命令读取 perf record 生成的数据文件,并显示分析数据,查看哪个函数占用cpu的时间长。

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值