gcc的常用命令
命令 | 作用 |
---|---|
-o <file> | 将命令的执行结果写入<file>文件中,默认为a.out |
-E | 预处理操作,生成预处理文件 |
-S | 编译操作,生成汇编语言目标文件 |
-C | 汇编操作,生成可重定位目标文件 |
-I <dir> | 将<dir>加入到头文件的搜索目录中,链接时在搜索标准头文件之前先在<dir>进行搜索 |
-L <dir> | 将<dir>加入到库文件的搜索目录中,链接时在搜索标准头文件之前先在<dir>进行搜索 |
-D <name> | 将宏<name>定义为1 |
-D <name> = <def> | 将宏<name>定义为<def> |
-v | 输出版本号 |
-w | 不输出警告信息 |
-g | 生成调试信息 |
-pg | 加入剖析代码,产生供gprof工具剖析用的统计信息 |
-O <n> | 设置编译优化级别,<n> = 0,1,2,3,s,默认为1。其中0表示不优化,3为最高等级的优化,s为2.5 |
gdb的常用命令
命令 | 作用 |
---|---|
gdb | 启动gdb,随后进入gdb调试工具 |
gdb [可执行文件名] | 启动gdb并加载调试文件,随后进入gdb调试工具 |
file <可执行文件名> | 加载可执行文件进行调试 |
run [参数列表] | 启动已经加载的被调试的程序,程序输入的参数可选,用空格分隔 |
list [显示对象] | 显示源代码,其中显示对象见下表 |
break [断点] | 设置断点,断点设置见下表。设置完断点后,默认状态是有效的 |
delete [断点编号] | 删除某断点 |
enable [断点编号] | 使某断点有效 |
disable [断点编号] | 使某断点无效 |
info [信息类型] | 查看被调试程序的信息。如br查看所有断点的详细信息(包括断点号);source查看源代码;stack查看栈信息;args查看参数信息 |
watch <表达式> | 观察某个表达式的值是否改变,若改变,暂停程序 |
print <表达式> | 显示某个表达式的值,该表达式中的变量必须是全局的,或者在当前栈区可见 |
x /NFU address | 显示内存单元的值。/NFU设置输出格式:N代表输出个数,默认为1;F代表输出格式,x为16进制,d为带符号10进制,u为无符号10进制,f为浮点数;U代表数据单元的大小,b为字节,h为双字节,w为四字节,g为八字节 |
step | 进入函数内部 |
next | 执行下一条语句,不会进入函数内部 |
continue | 使程序继续执行 |
quit | 退出gdb工具 |
help [命令名] | 输出某个命令的用法 |
list和break命令的参数
两个命令的参数含义较为相近,故放在一张表中。
参数 | 在list中的作用 | 在break中的作用 |
---|---|---|
<linenum> | 显示行号为<linenum>的前后若干行代码 | 在行号为<linenum>的代码处设置断点 |
<+offset> | 显示当前行+offset对应的行的前后若干行代码 | 在当前行+offset对应的行的代码处设置断点 |
<-offset> | 显示当前行-offset对应的行的前后若干行代码 | 在当前行-offset对应的行的代码处设置断点 |
<filename: linenum> | 显示在filename文件中行号为linenum的前后若干行代码 | 在filename文件中行号为linenum的代码处设置断点 |
<function> | 显示在函数代码 | 在函数入口处设置断点 |
<filename: function> | 显示在filename文件中的function函数代码 | 在filename文件中的function函数入口处设置断点 |
* address | 显示address地址处的代码 | 在address地址处设置断点 |
<condition> | - | 设置一个条件断点,满足<condition>条件断点才会生效 |
参考资料:《计算机系统基础》,袁春风 编著