命令行中使用gcc编译器和gdb调试

先在命令行中输入g++看看有没有反应,没有就百度一下如何添加。

常见编译选项

gcc test.c//编译为a.exe文件
gcc test.c -o test //编译为test.exe文件
gcc test.c -o test -Wall -ansi -pedantic //编译并检查错误(一般wall即可)
gcc test.c -o test -lm //链接数学库(C++不用)

还有一些编译选项
比如-DDEBUG,可以编译程序中

#ifdef DEBUG

#endif

的部分。
-O1,-O2,-O3为编译器自动对代码进行优化。

gdb初探

使用方法:用gcc编译时,加上-g选项,然后 输入
注意:在gdb中逐句调试时,显示的语句是下一步将要运行的语句(目前尚未运行)

gdb test.exe

gdb常见命令

查看帮助/查看某一命令帮助

help
help xxx

查看程序源代码某一行

list 15
l 15
li 15
lis 15

如上,gdb命令可以简写,前几个字母就可以。不过为了方便记忆,还是建议用完整的命令

运行程序

run test.exe

设置断点和继续运行

break main
break 14 
continue

如上,设置断点可以写函数名称或者函数,然后用run命令到了断点就会停下来。用continue命令就能继续。

删除/临时禁止/恢复/全部断点 删除某一行断点

delete break
disable break
enable break
clear 15

逐句运行

step
next

方法:首先设置断点,然后运行,在断点处停止后,调用这两句。区别是:如果当前行涉及函数调用,next会将其作为一个整体执行完毕,而step是进入函数内部。
另外,在gdb中,如果直接按Enter键,等价于再次执行上一条命令。所以之后只要不停按Enter就好了。

在程序中运行到指定行

until 15

注意使用这条语句和上面一样,是要运行了程序而且停止在断点处才可以使用。

gdb具体应用之打印变量值

打印当前某一变量值

print i

显示目前所有局部变量的值

info locals

之后每一行运行都打印该变量的值

display x
display x+1

列出当前所有正在display的变量

info display

**
退出gdb

quit

还有很多高级功能,先不学习了。

你可能感兴趣的:(windows基础操作)