GDB vs LLDB

mac无法使用GDB(mac 10.14.2安装证书后),报错如下:
Unable to find Mach task port for process-id xxx: (os/kern) failure (0x5).\n (please check gdb is codesigned - see taskgated(8))

解决方案参照如下:
https://www.cnblogs.com/Primzahl/p/10634969.html
https://blog.csdn.net/lifujie1554883155/article/details/79661584

创建证书参照如下:
https://www.cnblogs.com/SZxiaochun/p/7747989.html

mac原生支持LLDB的情况下,就直接使用LLDB,只是使用方法有一些区别,不过大体思路都是相同的,以下自己使用过程一些常用命令:

$ gdb  
使用命令:
$ file <filename> 加载文件
$ r   == run
$ s  == step  单步进入
$ n  == next 单步跳过
$ bt == 列出调用栈
$ p  <变量名>  查看变量的值
$ b <行号 或者函数名> 设置断点位置 ,br(相同) ,  break
$ c  continue  中断当前断点  
$ quit  退出



$ lldb
使用命令:
$ file <filename> 加载文件
$ r   == run
$ s  == step  单步进入
$ n  == next 单步跳过
$ quit  退出

#查看变量  
$ p 或者 print 
$ po 或者 print object
#删除断点
$ br de 1.1 
#禁用断点
$ breakpoint disable 1.1 

#设置断点 
$ b  或者 br  或者 breakpoint
#条件断点
$ br s n -n  video_thread 'index == 247’  
-l 按行设置    -f   按函数    -n  foo
$ br s  -l  768  -c 'index == 247’
#以函数名设置断点
$ br set -n thread2


#所有断点列表
$ br l  
#列出调用栈
$ bt 或者 thread backtrace
#show the stack backtraces for all threads
$ bt all  或者 thread backtrace all 
#设置变量的值
$ expression i=6  #设置i为6 
#打印i的值
$ expression i
#寻址
$ image lookup -a 0x0000
$ image lookup --address 0x0000000100000ce7  结果如下:
      Address: main1[0x0000000100000ce7] (main1.__TEXT.__text + 103)
      Summary: main1`main + 39 at main1.cpp:21

#列出所有使用的库
$ image list 
列出当前桢所有变量
$ fr v  , frame variable 
#当前桢所在信息
$ frame info 
$ thread return 
#non-stop 模式
$ settings set target.non-stop-mode true  

LLDB官网列出的与GDB使用区别
https://lldb.llvm.org/use/map.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值