随笔分类 -  GCC/G++/GDB/core dump/调试

摘要:转自:https://www.cnblogs.com/shengulong/p/8053370.html gdb调试python的时候,需要根据不同的python版本2.6、2.7、3.x安装相应的gdb; 如何指定关联的python版本? 下面gdb源码,解压后,进入目录: ./configure 阅读全文
posted @ 2024-02-05 09:35 dzqabc 阅读(137) 评论(0) 推荐(0) 编辑
摘要:交叉编译环境的linaro-gdb可以用了,结果打开core文件,显示堆栈都是?? aarch64-linux-gun-gdb ./test core warning: /lib/libpthread.so.0': Shared library architecture unknown is not 阅读全文
posted @ 2021-11-24 17:38 dzqabc 阅读(575) 评论(0) 推荐(0) 编辑
摘要:1.交叉编译环境下的linaro-gdb无法用。 参考:https://stackoverflow.com/questions/25314983/ldd-says-not-found-even-though-library-is-in-my-ld-library-path 交叉编译环境里面gdb报错 阅读全文
posted @ 2021-11-24 16:26 dzqabc 阅读(698) 评论(0) 推荐(0) 编辑
摘要:参考:https://stackoverflow.com/questions/13403824/empty-core-dump-file-after-segmentation-fault 1.受限要开启coredump的大小限制。ulimit -c unlimited 2.core文件不能在挂在分区 阅读全文
posted @ 2021-11-23 20:48 dzqabc 阅读(1195) 评论(0) 推荐(0) 编辑
摘要:只能在uv_close之后的uv_cb中对handle内存进行释放。 因为uv_close本身只是将handle代释放队列,倘若释放时遇到某些异步处理(如:uv_write)需要失败回调通知,将会继续调用对应的回调,此时再访问handle和可能因内存访问coredump。 void TcpHandl 阅读全文
posted @ 2021-11-18 22:56 dzqabc 阅读(237) 评论(0) 推荐(0) 编辑
摘要:gcc -dM -E - < /dev/null gcc -dM -E - < /dev/null 阅读全文
posted @ 2021-11-18 17:29 dzqabc 阅读(177) 评论(0) 推荐(0) 编辑
摘要:CPU 同内存交换数据的最小内存单位为4字节,即32位由CPU总线决定,所以小于4 字节的读取或者赋值操作无需加锁。即使不加锁也不会出现读取到的4字节中一半数据被改一半数据没有被改的情况。 但对 i++ 这类组合操作,仍可能需加锁. 因为i++是至少一次读取i一次写入i这两条命令,中间被打断就无法保 阅读全文
posted @ 2021-06-17 00:26 dzqabc 阅读(583) 评论(0) 推荐(0) 编辑
摘要:0.多重继承情况下,对象创建时会生成多个续表指针,用于转换成不同基类时的操作。 为了实现不同基类都能通过偏移找到对应虚表,这种对象在转换成不同基类型时也就进行指针的偏移。具体内存布局可以参考:多重继承和void*的糗事 1.在内存释放时delete可以对多重继承对象的不同类型指针进行释放。 那del 阅读全文
posted @ 2021-06-15 18:43 dzqabc 阅读(156) 评论(0) 推荐(0) 编辑
摘要:Jemalloc 不仅实现了一种通用的malloc, 还能利用它来做内存分析和监控/调优等. 这里介绍如何利用jemalloc来检测内存泄漏问题. 并且利用LD_PRELOAD环境变量, 可以做到不需要源代码, 将jemalloc库嵌入到可执行程序中, 从而用jemalloc去malloc内存, 并 阅读全文
posted @ 2021-06-10 01:16 dzqabc 阅读(1391) 评论(0) 推荐(0) 编辑
摘要:转载自:https://blog.csdn.net/yanxiangyfg/article/details/80989680 讲的很清晰 一、gcov简介gcov是什么gcov是一个测试代码覆盖率的工具。与GCC一起使用来分析程序,以帮助创建更高效、更快的运行代码,并发现程序的未测试部分是一个命令行 阅读全文
posted @ 2021-06-04 01:11 dzqabc 阅读(4519) 评论(0) 推荐(1) 编辑
摘要:warning: specialization of ‘template<class _Iterator> struct std::iterator_traits’ in different namespace [-fpermissive] While everything works correc 阅读全文
posted @ 2019-11-27 00:48 dzqabc 阅读(510) 评论(0) 推荐(0) 编辑
摘要:期初现象:malloc一块内存,读写操作时发生segmentation falt。一般来讲malloc倘若失败应该抛出异常,所以malloc返回一个指针后,这个指针应该都是可用的,况且是进行读操作。 所以遇到这个问题时感觉很奇怪。 继续现象:经过地址打印确认该地址是前面操作过的一个地址。说明地址不在 阅读全文
posted @ 2019-11-27 00:39 dzqabc 阅读(1234) 评论(0) 推荐(0) 编辑
摘要:推动存储管理方式从固定分区到动态分区分配,进而又发展到分页存储管理方式的主要动力是提高内存利用率。可以实现一个内存用于多个程序同时执行而不会发生地址冲突。引入分段存储管理方式的目的,则主要是为了满足用户(程序员)在变成和使用上多方面的要求(方便编程、信息共享、信息保护、动态增长、动态链接)。段是内存 阅读全文
posted @ 2019-10-20 23:15 dzqabc 阅读(508) 评论(0) 推荐(0) 编辑
摘要:1.栈溢出引发的core往往出现出现在递归调用中。 gdb时看到的特征是: 栈缺失,当前栈地址不可读。 根据栈是逆向生长的特点(栈逆向生长,所以很容易出现类似数组溢出覆盖率函数返回地址,导致函数退出地址出错),可以通过地址增加找到栈的位置。 找到有效栈后往往会发现重复的地址不断重复,这个实际就是递归 阅读全文
posted @ 2019-08-11 15:30 dzqabc 阅读(2531) 评论(0) 推荐(0) 编辑
摘要:SS, SP, BP 三个寄存器 SS:存放栈的段地址;SP:堆栈寄存器SP(stack pointer)存放栈的偏移地址;BP: 基数指针寄存器BP(base pointer)是一个寄存器,它的用途有点特殊,是和堆栈指针SP联合使用的,作为SP校准使用的,只有在寻找堆栈里的数据和使用个别的寻址方式... 阅读全文
posted @ 2015-11-12 23:11 dzqabc 阅读(17729) 评论(0) 推荐(1) 编辑
摘要:信号(Signals)信号是一种软中断,是一种处理异步事件的方法。一般来说,操作系统都支持许多信号。尤其是UNIX,比较重要应用程序一般都会处理信号。UNIX定义了许 多信号,比如SIGINT表示中断字符信号,也就是Ctrl+C的信号,SIGBUS表示硬件故障的信号;SIGCHLD表示子进程状态改变... 阅读全文
posted @ 2015-08-23 16:03 dzqabc 阅读(1823) 评论(0) 推荐(0) 编辑
摘要:gcc 动态编译(共享库) 动态编译的可执行文件需要附带一个的动态链接库,在执行时,需要调用其对应动态链接库中的命令优点:体积小,编译快缺点:依赖性高代码如下:[root@74-82-173-217 shared]# cat add.cint add (int x, int y) {return x... 阅读全文
posted @ 2014-10-27 23:37 dzqabc 阅读(2206) 评论(0) 推荐(0) 编辑
摘要:__builtin_prefetch() 是 gcc 的一个内置函数。它通过对数据手工预取的方法,减少了读取延迟,从而提高了性能,但该函数也需要 CPU 的支持。该函数的原型为:void __builtin_prefetch (const void *addr, ...)其中参数 addr 是个内存... 阅读全文
posted @ 2014-04-27 16:52 dzqabc 阅读(21603) 评论(1) 推荐(3) 编辑
摘要:有时为定位一些如头文件循环包含致编译不过问题,我们要知道头文件包含顺序。G++ -H 除了进行正常编译,还会打印每个头文件的名称。每个文件通过缩进表示它在包括堆栈中的深度。无效的预编译头文件也会打印出来;无效的预编译头文件打印...x,有效的打印...! 阅读全文
posted @ 2013-04-11 00:24 dzqabc 阅读(692) 评论(0) 推荐(0) 编辑
摘要:一、头文件gcc 在编译时寻找所需要的头文件 :※搜寻会从-I开始※然后找gcc的环境变量 C_INCLUDE_PATH,CPLUS_INCLUDE_PATH,OBJC_INCLUDE_PATH※再找内定目录/usr/include /usr/local/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/usr/lib/gcc-lib/i386-linux/2.95.2/include/g++-3/usr/lib/gcc-lib/i386-linux/2.95.2/i386-linux/include库文件但是如果装gcc的时候,是有给定的pr 阅读全文
posted @ 2013-03-04 22:20 dzqabc 阅读(1646) 评论(0) 推荐(0) 编辑