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