![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
调试优化
dusk0825
这个作者很懒,什么都没留下…
展开
-
避免死锁的产生
定义:死锁是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。二、避免死锁建议1、避免嵌套锁第一个建议往往是最简单的: 一个线程已获得一个锁时, 再别去获取第二个。 如果能坚持这个建议, 因为每个线程只持有一个锁, 锁上就不会产生死锁。 即使互斥锁造成死锁的最常见原因, 也可能会在其他方面受到死锁的困扰(比如: 线程间的互相等待)。 当需要获原创 2020-09-05 21:33:58 · 249 阅读 · 0 评论 -
c++性能优化(cpu篇)
背景1、做性能优化时,其实也是存在二八定律的,基本上80% 的性能损耗是由20%的代码引起的,而且这20%的代码被基本上被调用的频率非常高。因此一些比较简单的优化就能显著提高性能;2、在写好代码之后再考虑性能优化的事,否则会出现代码难以读懂,抽象依赖细节等各种问题。另外过早的优化可能没有想象的那么有用,原因参考第一条;3、在资源不是很紧张的情况下,程序员的生产力的提高比性能的优化更重要。4、很多优化都是在做时间和空间的权衡,考虑哪个更重要,然后决定优化思路;5、良好的代码风格,代码结构能原创 2020-08-31 16:06:01 · 2166 阅读 · 0 评论 -
perf分析CPU性能
1.火焰图 火焰图整个图形看起来就像一团跳动的火焰, 这也正是其名字的由来. 燃烧在火苗尖部的就是 CPU 正在执行的操作, 不过需要说明的是颜色是随机的, 本身并没有特殊的含义, 纵向表示调用栈的深度, 横向表示消耗的时间。因为调用栈在横向会按照字母排序, 并且同样的调用栈会做合并, 所以一个格子的宽度越大越说明其可能是瓶颈。综上所述, 主要就是看那些比较宽大的火苗, 特别留意那些类似平顶山的火苗。2. perf命令生成火焰图 perf命令是 Linux 系统原生提供的...原创 2020-08-24 22:47:11 · 2207 阅读 · 0 评论 -
gdb调试常用命令
一、显示info args 打印出当前函数的参数名及其值info locals 打印出当前函数中所有局部变量及其值set print elements 0 打印的字符串长度不受限制二、设置断点break + 行号或函数名 break n/func 设置临时断点,到达后被自动删除break + filename + 行号 break main.c:10 ...原创 2020-08-24 22:46:11 · 323 阅读 · 0 评论