当前位置: 首页 > 工具软件 > LLDB > 使用案例 >

GDB vs LLDB

容飞掣
2023-12-01

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

 类似资料:

相关阅读

相关文章

相关问答