【gcc】:
1、编译四步骤:
预处理:gcc -E test.c -o test.i
编译: gcc -S test.i -o test.s
汇编: gcc -c test.s -o test.o
连接: gcc test.o -o test.out
2、指定输出文件名称:gcc test.c -o test.out
3、显示编译时的详细信息、编译器的版本、编译过程等 gcc -v
4、加入gdb调试信息 gcc -g
5、打开所有警告信息 gcc -Wall
6、使用优化选项 gcc -Ox 【x为0 1 2 3,0为不优化,等效于不加-O0】
7、增加备选头文件目录 gcc -l /home/xxx/xxx
8、增加首选库文件目录 gcc -L /home/xxx/xxx
9、生成静态连接库文件 gcc -static
【gdb】:
1、装载调试文件【两种方式】,但没开始运行
a> gdb test.out
b> gdb
file test.out
2、从main重新开始执行程序【=右边是命令的缩写】,系统自动在main{处设置临时断点
start =st
3、开始调试程序,全速执行,一路执行到完(与start比较)。可选参数,表示 > < >>输入输出参数等
run =r
4、信号/断点 使暂停后,继续执行直到遇到断点,否则执行到完。可选参数N,表示忽略几次断点
continue [N]
5、单步执行,可跟参数N,表示执行几步
step [N]
6、break =b
a> 增加断点 break [bp-spec],增加断点后,默认使能
b> 查看当前断点信息 info breakpoints/info break/info breakpoint/i b
c> 断点生效 enable num
d> 断点失效 disable num
e> 删除断点 delete num
f> 使断点bp_num被忽略Count次 ignore bp_num Count
7、添加调试暂停后待现实更新的变量
a> 增加自动显示表达式&变量 display EXP
b> 删除自动显示表达式&变量编号num,无参数num则表示删除全部 undisplay [num]
8、打印表达式&变量的值 print =p
a> 查看局部变量【例如,全局变量与局部变量同名时】 print function::variable or print 'function'::variable
b> 查看局部变量【例如,不同文件中同名时】 print 'file'::function::variable
c> 查看全局变量【例如,不同文件中同名时】 print 'file'::variable
d> 查看动态数组【array为数组首地址,len为数据个数(不是字节长)】 p *array@len
e> 查看静态数组【array为数组名】 p array
f> 输出格式【例如,变量i】
x 按十六进制格式显示 p/x i
d 按十进制格式显示 p/d i
u 按十六进制无符号格式显示 p/u i
o 按八进制格式显示 p/o i
t 按二进制格式显示 p/t i
a 按十六进制格式显示 p/a i
c 按字符格式显示 p/c i
f 按浮点格式显示 p/f i
9、观察点设置,为某一表达式设置观察点,当程序执行过程中,表达式的值发生变化时,则gdb会中断执行
a> 当变量的值发生变化时,中断程序的执行 watch EXP
b> 当地址处的值发生变化时,中断程序的执行 watch -location(=-l) EXP
c> 当值被读取时,中断程序的执行 rwatch a
10、中断程序的执行 kill
11、选择并打印某一栈帧,NUM可选
a> frame [NUM]
12、退出调试
quit
13、backtrace
14、改变变量的值 set
15、info
a> info address
b> info registers
c> info all-registers
d> info args
e> info auto-load
f> info breakpoints/b
g> info files
h> info frame
i> info functions
j> info locals
k> info mem
l> info program
m> info set
o> info sharedlibrary
p> info source
q> info sources
r> info stack
s> info target
t> info variables
u> info win
16、执行下一语句,但不进入(相对于step) next =n
17、显示文件源码 list =l
a> 显示当前文件N行前后 l N
b> 显示文件【file】的行【N】前后 l file.c:N
c> 显示文件函数【function】前后 l function
d> 显示文件【file】的函数【function】 l file.c:function
18、装载/载入 文件 file
19、文件窗口的打开关闭及切换:src register assemble cmd
a> 显示源码窗 layout src
b> 显示汇编窗 layout asm
c> 显示分割窗【源码窗在上、汇编窗居中、命令窗在下】 layout split
d> 显示寄存器窗【在源码/汇编窗之上】
e> 显示通用寄存器窗 tui reg general
f> 显示系统寄存器窗 tui reg system
g> 显示多寄存器页的下一页 tui reg next
h> 显示当前所有窗体及focus窗体 info win
i> 在info win显示的所有窗体中,从上到下,依次切换当前窗体 fs next
j> 切换到命令窗 fs CMD/cmd
k> 切换到代码窗 fs SRC/src
20、显示变量类型有两个命令 whatis or ptype
【objdump】:
【nm】:
【readelf】: