前言
编程是一门严谨的学科,即使是优秀的程序员在进行编程的过程中也不可避免的会出现错误。完美的程序需要经历工匠精神不断的打磨与调试。调试的目的有两个:一是纠错,二是“美化”。本章内容主要介绍“纠错”,程序中的错误包括两种,一种是逻辑错误,一种是语法错误。
任何一种错误存在都会对我们想要的结果产生影响。当程序中存在语法错误时,编译器将会自动识别,即:程序无法实现编译过程;当程序中存在逻辑错误时,程序可以编译运行,但是结果通常是错的,这就要求程序员逐步对代码进行“检修”。GDB正式代码“检修”常见的工具之一。
一、GDB是什么?
GDB,全称:GNU symbolic debugger,是Linux 下使用最多的一款调试器,也有 Windows 的移植版,通常用来调试C、C++等语言。对我来说,主要是在windows和mac系统调试fortran程序。
本次笔记的目的主要是记录常用的GDB调试命令,便于以后查询。
gfortran -g -o test Implicit.f90
编译好的文件叫 test,程序文件较Implicit.f90
gdb test
3.调试命令- run (r)——运行;
重新编译则需要重新运行,否则无需多次运行; - continue (c)——继续;
- break(b)——断点; 如:b 5,
- tbreak + 行号或函数名(tbreak n/func)——设置临时断点,到达后被自动删除;
- break + filename + 行号(break Implicit.f90:10)——在指定文件对应行设置断点;
- break + 行号 + if + 条件(break 260 if j950=3)——设置条件断点,在循环中使用非常方便 ;
- print (p)—— 显示变量值; 如p n,显示变量n的值;
- line (l)——查看源码,十行为一组;如果需要查看在其他文件中定义的函数,在l后加上函数名即可定位到这个函数的定义及查看附近的其他源码。或者:使用断点或单步运行,到某个函数处使用s进入这个函数。
- info breakpoints/watchpoints ——查看程序内的断点或观察点情况,是所有断点或观察点;
- watch ——设置观察点;
rwatch + 变量 设置一个观察点,当变量被读出时,程序被暂停 ;
awatch/watch + 变量 设置一个观察点,当变量被读出或写入时程序被暂停 - n——单步运行;
- q——退出调试;
- clear + 要清除的断点行号 用于清除对应行的断点,要给出断点的行号,清除时GDB会给出提示;
- delete + 要清除的断点编号 用于清除断点和自动显示的表达式的命令,要给出断点的编号,清除时GDB不会给出任何提示
- disable/enable + 断点编号 让所设断点暂时失效/使能,如果要让多个编号处的断点失效/使能,可将编号之间用空格隔开
总结
以上只总结了常用命令,参考链接如下:
reference1.https://blog.csdn.net/weixin_43913107/article/details/101713638
2. http://c.biancheng.net/view/vip_8514.html
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)