LLDB与GDB的“监视”命令(例如“监视重置”)等效吗?

时间:2019-08-11 15:27:49

标签: gdb remote-debugging lldb bare-metal gdbserver

在GDB远程调试中,monitor <verb>发送命令<verb>由远程GDB服务器执行。在这种特殊情况下,GDB服务器实际上是JLink为他们的JTAG调试器提供的服务器,用于调试在真实硬件上运行的嵌入式软件。这些命令广泛用于控制目标CPU,例如使用monitor reset对其进行重置。

我正在运行使用clang / LLVM(使用libc ++)编译的裸机可执行文件。因此,我宁愿将LLDB与该可执行文件一起使用,以期更好地支持库类型和编译器生成的内部结构的漂亮打印。

LLDB确实支持GDB远程调试协议。但是,如何将等效的GDB monitor命令发送到服务器?

2 个答案:

答案 0 :(得分:1)

lldb可以使用以下方式将原始数据包发送到服务器:

(lldb) process plugin packet send

它可以使用以下命令发送qRcmd命令:

(lldb) process plugin packet monitor

我不记得gdb监视器命令发送了什么,但是您可以打开gdb中的数据包日志记录,运行该命令以查看其发送的内容,然后在lldb中使用适当的命令重播它。

答案 1 :(得分:1)

mailing list post中回答。基本上,假设您要发送reset halt命令,在GDB中,您会说:

monitor reset halt

在LLDB中,您可以执行以下操作:

process plugin packet monitor reset halt