在gcc编译时加上-lpthread参数,用以连接到库文件。且加上-g参数,用以支持gdb调试。
例如gcc test.c -o -g test -lpthread
会得到可执行文件test
而后使用gdb对可执行文件test进行调试
gdb test
clear 行号:清楚断点
info 行号:查看断点
run:进入到下一个断点肢帆(执行函数体)
stpe:进入到下一个断点(不执行函数体)
infothread:查看被调试的线程
一. 调试前的准备1) 将工程所用的*.cpp和*.h文件放到相同目录下,工程文件*.prj也建在此目录下,并且导出Makefile到此目录下( Windows系统和Linux的目录路径表示方法不同,用此法可避免调试时找不到源代码文件的路径)2) 将整个工程目录打包拷贝到Linux主机上,然后解压;3) 在Linux主机上进入工程目录,运行make编译,把编译好的程序(aout.exe)拷贝到Windows主机的工程目录;(此时Windows主机与Linux主机上工程目录内的源码敏腊文件和执行程序应该完全相同)4) 检查Linux主机上gdb和gdbserver是否正确安装,版本是否6.6以上;$ gdb -v二. 调试环境设置1) 在Windows主机上运行GCCIDE,打开工程文件;2) 假定Linux主机的IP为192.168.1.185,在菜单\调试\调试设置内如下设置:3) 在Linux主机上进入工程目录,运行gdbserver命令:$ gdbserver 192.168.1.185:2222 aout.exe(aout.exe实际上是elf格式的Linux程序,取此名称仅仅只是为方便识别)4) 检查网络环境,确保调试过程中不因网络故障而影响调试;三. 调试过程1) 调试过程几乎与本机调试一样,只有被调试程序(aout.exe)的输出是在Linux主机上,不在Windows主机上;2) 可以在GCCIDE的命令条上发gdb命令,tty命令可以重定向被调试程序的输出(仍然在Linux主机上)四. 调试中常见问题处理1) 调试开始后,连不到Linux主机;检查Linux主机上是否运行gdbserver,每次调试都要重新运行gdbserver;$ gdbserver 192.168.1.185:2222 aout.exe2) 重新打开工程或重起GCCIDE后,上次的调试设置无效;目前GCCIDE暂时桥灶滑没有提辩迹供保存上次调试设置的功能。3) 断点设置没生效;如果被调试程序处于运行状态,不是中断状态,gdb不会回到提示符状态,也不会受理用户命令;五. 调试日志欢迎分享,转载请注明来源:内存溢出
评论列表(0条)