c++ - 跳转到 lldb 中的行号

标签 c++ objective-c xcode macos lldb

如何跳转到 lldb 中的特定源代码行?在 gdb 中,它将是“jump X”,其中 X 是行号,但我能为 lldb 找到的唯一引用是 http://lldb.llvm.org/lldb-gdb.html其中说:

Skip 8 bytes ahead of the current program counter (instruction pointer). Note that we use backticks to evaluate an expression and insert the scalar result in LLDB.

(gdb) jump *$pc+8
(lldb) register write pc `$pc+8`

FWIW,在 MacOS 上,用“rip”替换“pc”似乎可行。

但是使用这种方法跳转到特定行似乎相当困难。有没有更好的方法来跳转lldb?

最佳答案

几天前,如何在 Python 中执行此操作的示例已添加到 lldb 存储库中。请参阅http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/jump.py

将该文件的内容保存到您的主目录,可能类似于 ~/lldb/jump.py 并使用类似命令将其加载到您的 lldb

command script import ~/lldb/jump.py

(或将其放入您的 ~/.lldbinit 文件中),您将获得一个 jump 命令。

请注意,使用 Objective-C 程序中的 ARC(自动引用计数),您可以通过跳转来 super 轻松地搞砸您的程序 - 许多看起来无害的跳转实际上并非如此。这绝对属于调试器技巧的“用户小心”/“祝你好运”类别。

关于c++ - 跳转到 lldb 中的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15413236/

相关文章:

c++ - 为什么 OPENFILENAME lpstrFileTitle 参数是 LPSTR 而不是 LPCSTR?

c++ - 表达式 ((sizetype)(((ssizetype)length) + -1)) + 1

python - 在 Cython 中包装返回复杂类型 Vector 的函数

iphone - "UIBackgroundTaskInvalid"是什么意思?

swift - IQKeyboardManager 中的构建错误

ios - Qt4iOS XCode 找不到 QUIWebView 类

c++ - 如何使用 gdb 查找线程树?

objective-c - 在使用 ARC 的项目中使用 ASIHTTPRequest

ios - 为什么 Xcode 的添加文档不起作用?

ios - 有没有办法在 MacBook M 上调试 iOS 应用或使用 TestFlight?