摘要:
在编译链接的时候,添加编译选项:-fsanitize=address,如下:g++ -std=c++11 -g -fsanitize=address a_test.cpp -o a_test 1. 内存泄漏问题: 1) 泄漏代码位置,行号为:7。 2)执行编译后的二进制。 3)发现的问题类型:内存泄 阅读全文
摘要:
总体思路:在方法最开始获取一下内存状态,在方法结束之前获取一下内存状态,看看两者是否有差异,如果有差异,说明了有内存泄漏 1. 调试初始状态 1). 分配内存代码,行号为10 2). 释放内存代码,行号为113). 断点到行号104). 运行代码5). 运行停在行号10 2. 方法内存变化分析: 1 阅读全文
摘要:
1. 直接在gdb窗口执行shell命令gdb窗口执行shell命令:1) shell ps -ef | grep python2) ! ps -ef | grep python这里的grep当期也可以使其他linux命令,比如wc等等,第二种写法是一种写法的简写 2. 管道过滤:1) pipe i 阅读全文
摘要:
1. 线程的基本操作 1).查看所有线程 : info/i threads,linux下的线程是轻量级线程,可以通过命令ps -aL查看所有的轻量级线程2).线程切换:thread 线程编号;3).查找线程: thread find 关键字,这样就查找了线程(名字/地址/LWP)包含关键字的线程4) 阅读全文
摘要:
1. whatis查看类型:a. 查看变量类型:eg: whatis one_personb. 查看函数定义:eg: whatis func_name,如果有多个同名的函数,那么只能看到一个 c. 查看某个类的函数定义:whatis Person::app1,查看的是对象成员,而不是类成员,可以使用 阅读全文
摘要:
断点设置1. 指定文件文件的行号设置断点,eg: b test.cpp:10, 这种设置断点的方式,如果整个项目中有多个test.cpp文件,那么每个文件对应的行都会被设置为断点2. 指定函数名字设置断点,如果有多个名字相同的,那么多个名字的函数都会被设置, eg: b exec_worker,如果 阅读全文