linux objdump 函数,linux下 gcc gdb objdump nm readelf常用命令:持续编辑中

【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】:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值