摘要: 说明: gdb中使用“x”命令来打印内存的值,格式为“x/nfu addr”。含义为以f格式打印从addr开始的n个长度单元为u的内存值。参数具体含义如下:a)n:输出单元的个数。b)f:是输出格式。比如x是以16进制形式输出,o是以8进制形式输出,等等。c)u:标明一个单元的长度。b是一个byte 阅读全文
posted @ 2022-01-17 23:11 邱明成 阅读(1291) 评论(0) 推荐(0) 编辑
摘要: l. list操作1). 向前显示固定行数的代码:l - 2). 查看指定函数的代码:l test_func,如果多个文件包含这个函数,那么会显示多个函数的定义代码,包括类中的方法。3). 查看指定类的函数的代码: l Person:print_self4). 显示指指定文件某行的代码: l tes 阅读全文
posted @ 2022-01-17 21:44 邱明成 阅读(49) 评论(0) 推荐(0) 编辑
摘要: 在编译链接的时候,添加编译选项:-fsanitize=address,如下:g++ -std=c++11 -g -fsanitize=address a_test.cpp -o a_test 1. 内存泄漏问题: 1) 泄漏代码位置,行号为:7。 2)执行编译后的二进制。 3)发现的问题类型:内存泄 阅读全文
posted @ 2022-01-17 19:18 邱明成 阅读(128) 评论(0) 推荐(0) 编辑
摘要: 总体思路:在方法最开始获取一下内存状态,在方法结束之前获取一下内存状态,看看两者是否有差异,如果有差异,说明了有内存泄漏 1. 调试初始状态 1). 分配内存代码,行号为10 2). 释放内存代码,行号为113). 断点到行号104). 运行代码5). 运行停在行号10 2. 方法内存变化分析: 1 阅读全文
posted @ 2022-01-17 16:55 邱明成 阅读(257) 评论(0) 推荐(0) 编辑
摘要: 1. 直接在gdb窗口执行shell命令gdb窗口执行shell命令:1) shell ps -ef | grep python2) ! ps -ef | grep python这里的grep当期也可以使其他linux命令,比如wc等等,第二种写法是一种写法的简写 2. 管道过滤:1) pipe i 阅读全文
posted @ 2022-01-17 15:49 邱明成 阅读(109) 评论(0) 推荐(0) 编辑
摘要: 1. 线程的基本操作 1).查看所有线程 : info/i threads,linux下的线程是轻量级线程,可以通过命令ps -aL查看所有的轻量级线程2).线程切换:thread 线程编号;3).查找线程: thread find 关键字,这样就查找了线程(名字/地址/LWP)包含关键字的线程4) 阅读全文
posted @ 2022-01-17 15:01 邱明成 阅读(228) 评论(0) 推荐(0) 编辑
摘要: 1. whatis查看类型:a. 查看变量类型:eg: whatis one_personb. 查看函数定义:eg: whatis func_name,如果有多个同名的函数,那么只能看到一个 c. 查看某个类的函数定义:whatis Person::app1,查看的是对象成员,而不是类成员,可以使用 阅读全文
posted @ 2022-01-17 11:18 邱明成 阅读(944) 评论(0) 推荐(0) 编辑
摘要: 断点设置1. 指定文件文件的行号设置断点,eg: b test.cpp:10, 这种设置断点的方式,如果整个项目中有多个test.cpp文件,那么每个文件对应的行都会被设置为断点2. 指定函数名字设置断点,如果有多个名字相同的,那么多个名字的函数都会被设置, eg: b exec_worker,如果 阅读全文
posted @ 2022-01-17 09:50 邱明成 阅读(483) 评论(0) 推荐(0) 编辑