Advance GDB
more than breakpoint + frame + bt + as 主要关注一下他人的调试经验,以及一些高级调试技巧,比如使用ebpf进行性能分析,使用gdb进行内存分析等等。 另外xxdb调试,一个很关键的技巧,我个人觉得是要掌握data point和watch point的使用,这个可以参考这里, 另外ref的第5篇文章也有提到。 另外经常使用lldb,需要参考lldb到...
more than breakpoint + frame + bt + as 主要关注一下他人的调试经验,以及一些高级调试技巧,比如使用ebpf进行性能分析,使用gdb进行内存分析等等。 另外xxdb调试,一个很关键的技巧,我个人觉得是要掌握data point和watch point的使用,这个可以参考这里, 另外ref的第5篇文章也有提到。 另外经常使用lldb,需要参考lldb到...
安装vs ninja就用官方的,python3 + ./configure.py –bootstrap, 然后用ninja -t compdb生成一个编译数据库,需要注意的是要打开vs的power shell 需要注意的是,在windows下,clangd的compile db要求是utf-8且只能是LF gn的编译更简单,...
inline 很早就知道std=c++11的inline其实和之前不一样了,11之后的编译器,几乎不会参考函数前的inline建议 另外inline其实不仅仅可以作用在函数头上,其实也可以作用在namespace上,在17之后甚至可以修饰变量 在11之后,inline很关键的一个作用时允许同一个函数或者是变量的定义出现在多个编译单元中,而不会报错, 最重要的其实也是针对这种ODR行为 ...
使用for range loop有个潜在的意思,就是你不要在中间再修改这个容器的大小,尤其不要随便操作迭代器 for range loop等价于实现了begin和end的容器在做一个 for(it = begin();it != end();it++) 这个时候如果你要改删除迭代器或者扩容,很可能出问题。尤其要注意在代码逻辑中,一些看似异步的回调,可能很快有sync的操作 在syn...
使用 jegdb 来调试内存相关 crash How to compare signed and unsigned integers in C++20? Algorithms for Modern Hardware it is realy dope 深入理解 C++ 链接符号决议:从符号重定义说...
标准库里的map和unordered_map,从某种程度上说,性能其实不是很行 list 首先说list,不支持随机访问,每个节点都是分散的,在大多数情况下每一个遍历的步骤都是cache miss 当前热点如果真的不怎么访问这个list,随便用,如果热点访问list,找死了 map and hashmap map里面是一个红黑树,组织起来的就是list,插入和搜索其实都是parti...
编译加速上的一些经验和分析方法,主要针对c++。 实际上在了解完make和ninja之后,发现要加速单translation unit的编译,应该最小化他要做的事,例如include what u want,使用pimpl,使用forward declaration等等。 一些compile optimize的经验 c++项目编译优化 C++服务编译...
What is Dns 简言之就是将Domain和ip相对应,类似一个电话簿 如果看toy implement, 我这里用py写了一个很简单的。 How it works 首先明确一下,整体的逻辑可以抽象程一个CS模型,但是这其中涉及到多个服务器, 最后client看到的就是一个req->response 下述四个服务器其实就可以看作一个dns解析流程,具体步骤可以看Ref里...
ls iostat iostat 是一个用于监控系统输入/输出设备负载情况的工具,它可以用来收集并显示系统的存储输入/输出统计信息。这可以帮助你识别磁盘 I/O 子系统的性能瓶颈。以下是一些基本的 iostat 命令和它们的用法: 显示所有设备的统计信息 你可以使用 iostat 命令而不带任何参数来显示所有设备的统计信息。这将显示自系统启动以来的统计信息。 ...
不必要的初始化 有一些make_xxx的初始化,这种如果有原生数组之类的,可能会帮你memset,包括数组的resize 可以看一下catch2作者关于vector性能的一篇文章 所以,如果只是要一个buffer的话,尤其是动态分配的内存的话,其实malloc是更优秀的解法 auto buffer_size = 5*1024*1024; std::unique_ptr<void...