摘要:
1. 安装辅助工具: LxRunOffline.exe 2. 安装WSL: LxRunOffline.exe install -n 2centos7 -d C:\qiumc\programs\wsl\centos2 -f C:\qiumc\programs\CentOS7_2\rootfs.tar. 阅读全文
摘要:
1. 生成debug版本,strip出release版本发给客户:strip -g program_debug -o program_release 然后通过DEBUG版本进行调试release程序:gdb --symbol=program_debug -exec=program_release2. 阅读全文
摘要:
1)thread apply all tb:大概查看一下所有线程堆栈情况,或者通过过滤,看看是否可以看一些问题2)逐个线程排查 a. thread 线程编号:切换到指定线程 b. bt:查看堆栈 c. f 帧号:切换到我们关注的自己代码的栈帧 d. l :查看帧附近的代码,确认代码是否在等待相关资源 阅读全文
摘要:
阅读全文
摘要:
1. 代码片段: 2. GDB执行分析: 1)断点到代码行19,并且运行到代码行19 2)启用反向执行功能:record,该命令必须在程序运行起来执行。3)下一步,来到调用子函数my_print的代码行204)进入子函数my_print的第一行55)一路n,来到代码行126)一路rn(反向执行),来 阅读全文
摘要:
1. 概要: 1). jump/j 行号,如果该行号有断点,则停止,如果没有断点,则继续执行,直到遇到断点或者程序终止 2). 可以跳转到其他函数,但是强烈不建议跳转到其他函数(因为这么跳转通常会导致程序异常终止) 2. 例子: 1)首次要断点的代码行20 2)要重复执行的代码片段3)重复执行的时候 阅读全文
摘要:
1)加载无符号表程序 2)断点到某一个函数,通过tab键可以模糊匹配查找要断点的函数3)运行程序4)查看第一个参数寄存器:i r rdi,我们传入的是字符a,可以看到查看到的值是97(字符a的ascii),符合预期。5)查看第二个参数寄存器:i r rsi,我们传入的是整数876,可以看到查看到的值 阅读全文
摘要:
1. 修改寄存器,跳过某些行代码 1)代码行10,要打断点的代码 2)代码行12,在行10下一步后,希望进入代码行12(跳过执行代码行11)3)期望代码行13输出0(因为代码行10没有执行,所以c的值仍然为原始值) 4)在行10打断点5)在程序run起来后,程序停在行10,查看行10的地址:i li 阅读全文
摘要:
说明: gdb中使用“x”命令来打印内存的值,格式为“x/nfu addr”。含义为以f格式打印从addr开始的n个长度单元为u的内存值。参数具体含义如下:a)n:输出单元的个数。b)f:是输出格式。比如x是以16进制形式输出,o是以8进制形式输出,等等。c)u:标明一个单元的长度。b是一个byte 阅读全文
摘要:
l. list操作1). 向前显示固定行数的代码:l - 2). 查看指定函数的代码:l test_func,如果多个文件包含这个函数,那么会显示多个函数的定义代码,包括类中的方法。3). 查看指定类的函数的代码: l Person:print_self4). 显示指指定文件某行的代码: l tes 阅读全文