mac下安装使用gdb调试

安装

brew install gdb 安装gdb

start调试报错

Unable to find Mach task port for process-id 15634: (os/kern) failure (0x5).
During startup program terminated with signal ?, Unknown signal.

证书创建过程参考:
http://www.jianshu.com/p/99b057d5566f 

google说没有code-sign,安装步骤一步一步证书签名认证,重启电脑,还是报错:
Starting program: /Users/Nj/www/C/test/test 
[New Thread 0x1603 of process 1648]
warning: unhandled dyld version (15)

> echo "set startup-with-shell off" >> ~/.gdbinit 按照提示信息创建gdbinit文件,并更改权限755

关掉终端,重启系统,终于可以start了~~~
gdb使用

gdb常用命令

file 装入想要调试的程序
run 执行当前被调试的程序
kill 终止当前被调试的程序
step 执行一行源代码而且进入函数的内部
next 执行一行源代码,但不进入函数的内部
break 在代码里设置断点,会使程序执行到这里时被挂起
print 打印变量或者表达式的值,或打印内存中某个变量开始的一段连续区域的值,还用来对变量赋值
display 设置自动显示的表达式或者变量,当程序停住或者再单步跟踪的时候,这些变量会自动显示当前值
list 列出产生执行文件的源代码的一部分
quit 退出gdb
watch 监视一个变量的值
backtrace 回溯跟踪
frame n 定位到发生错误的代码段 n为backtrace命令的输出结果中的行号
examine 查看内存地址中的值
jump 使程序跳转
signal 产生信号量
return 强制函数返回
call 强制调用函数
make 使用户不退出gdb就可以重新产生可执行文件
shell 是用户不离开gdb就可以执行shell命令

p(print)<expr> 打印变量的值
p/x 十六进制打印
p/d 十进制打印
p/u 十六进制无符号数打印
p/o 八进制打印
p/t 二进制打印
p/c 按字符格式

s(step) 执行下一条指令,并进入指令的内部
n(next) 执行下一条指令,不进入指令的内部
display 自动显示变量的值
undisplay 删除自动显示
disable display <dnum> 不删除,只是让它失效
info display 显示所有设置的自动显示

x(examine) 查看内存
x/<n/f/u> <addr>
n是正整数,表示显示的内存长度,也就是从当前地址向后显示几个地址的内容
f是显示的格式字符串格式s 指令地址i
u表示从当前地址向后显示几个字节默认4个,b表示单字节、h表示双字节、w表示4个字节、g表示8个字节

show convenice 显示所有的环境变量
set $foo = bar 设置一个环境变量

set $a = 1;
p $a + 1; //可以得到2

info registers 显示寄存器的情况(不包括浮点寄存器)
info all-register 查看所有寄存器的情况
info registers <regname> 查看指定寄存器的情况
也可以使用print查看,只需要在寄存器的名字前加上一个$符号就可以了

查看源程序
list <linenum> 显示指定行周围的代码
list <function> 显示函数名为function的函数的源程序
list <first>,<end> 显示first end之间的代码
show listsize 查看当前设置的显示行数
set listsize <count> 设置一次显示的行数
list 显示当前行后边的源程序

disassemble 查看程序的汇编代码

改变程序的执行
使用print num=.. 来改变程序中的值

查看内存地址
info line X X可以是行号、文件名:行号、函数名、文件名:函数名的形式

跳转执行
jump <linespec> linespec可以是文件行号,也可以是file:line的形式或者是+num这种格式,表示下一条运行语句从哪里开始
jump <address> 表示跳转到哪一代码行的运行地址
return <expr> 强制函数返回
call <expr> 强制调用函数
show language 查看当前的语言环境
info frame 查看当前函数的程序语言
info source 查看当前文件的程序语言

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值