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

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
如果在VS Code中没有C++的GDBLLDB调试器,你可以按照以下步骤进行设置: 1. 首先,确保你已经安装了GDBLLDB调试器。你可以在终端中运行以下命令来检查它们是否安装: ``` gdb --version lldb --version ``` 如果没有安装,你可以使用包管理器(如apt、yum、brew等)来安装它们。 2. 安装C/C++扩展:打开VS Code并导航到"Extensions"(或按下Ctrl+Shift+X),搜索并安装名为"C/C++"的扩展。 3. 在VS Code中打开你的C++项目。 4. 在项目文件夹中创建一个名为".vscode"的文件夹(如果不存在),然后在其中创建一个名为"launch.json"的文件。 5. 在"launch.json"文件中添加以下配置(用于GDB调试器): ```json { "version": "0.2.0", "configurations": [ { "name": "C++ Launch (GDB)", "type": "cppdbg", "request": "launch", "program": "${workspaceFolder}/<可执行文件名>", "args": [], "stopAtEntry": false, "cwd": "${workspaceFolder}", "environment": [], "externalConsole": false, "MIMode": "gdb", "miDebuggerPath": "<GDB可执行文件路径>" } ] } ``` 替换`<可执行文件名>`为你的C++可执行文件的名称,`<GDB可执行文件路径>`为你的GDB可执行文件的路径。 6. 如果你使用的是LLDB调试器,可以使用以下配置(替换`<LLDB可执行文件路径>`): ```json { "version": "0.2.0", "configurations": [ { "name": "C++ Launch (LLDB)", "type": "lldb", "request": "launch", "program": "${workspaceFolder}/<可执行文件名>", "args": [], "cwd": "${workspaceFolder}", "externalConsole": false, "preLaunchTask": "build", "miDebuggerPath": "<LLDB可执行文件路径>" } ] } ``` 替换`<可执行文件名>`为你的C++可执行文件的名称,`<LLDB可执行文件路径>`为你的LLDB可执行文件的路径。 7. 保存"launch.json"文件。 8. 现在你可以在VS Code的调试选项卡中选择C++调试器配置,并点击启动按钮开始调试。 这样,你就可以在VS Code中使用GDBLLDB调试器调试你的C++代码了。如果你遇到任何问题,请提供详细的错误信息,以便我能够更好地帮助你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值