【问题标题】:LLDB: Equivalent of process connect in pythonLLDB:相当于python中的进程连接
【发布时间】:2015-08-18 17:14:02
【问题描述】:

我目前正在执行:

process connect <url>

从 lldb 命令行建立连接。我想做的是包含在 python 脚本中以自动建立此连接。

我需要使用的python api是什么?

【问题讨论】:

    标签: python scripting lldb


    【解决方案1】:

    在 SB API 中,这是SBTarget::ConnectRemote。它不能是 SBProcess 方法,因为在调用它之前您没有进程...

    请注意,您可能不想将自己的SBListener 提供给SBTarget::ConnectRemote。如果您提供 nil 侦听器,它(以及采用SBListener 的所有其他进程创建调用)将使用调试器的侦听器。

    例如,如果您正在编写一个 Python 命令来执行连接,那么您需要让常规调试器的事件处理程序在您连接后处理进程事件。

    如果您想尝试自己处理流程事件,示例:

    http://llvm.org/svn/llvm-project/lldb/trunk/examples/python/process_events.py

    会让你开始。

    【讨论】:

    • 当我从 lldb 命令行使用进程连接时,我不需要指定监听器。这个 api 需要传入一个监听器。我应该传入什么?
    • 监听器用于如果你想控制这个进程的事件与由这个调试器管理的其他进程分开。一般来说,这不是必需的,如果你传入一个空的监听器,那么调试器将被连接起来处理这个进程的事件。如果你只想使用 Python 连接,那么返回命令行,这是正确的做法,因为命令行假定调试器正在处理所有进程的事件。
    • 注意,如果您有兴趣在 Python 代码中进一步推动该过程,这里有一个示例:llvm.org/svn/llvm-project/lldb/trunk/examples/python/…
    • 如果您可以用您在 cmets 中写的内容更新您的答案,我会将这个问题标记为已回答。
    • 很抱歉,我仍然缺少一些东西。如何获得有效的目标对象?如果我手动调用'process connect ',我可以调用我的自定义命令并调用我的 def __lldb_init_module (debugger, dict) 函数。然后我可以向调试器询问 GetSelectedTarget,它会给我一个有效的目标对象。这里似乎有先有鸡还是先有蛋的问题……我需要一个目标来建立连接,但我需要建立连接才能有一个目标。这个问题是如何解决的?
    猜你喜欢
    • 2012-08-25
    • 2011-10-11
    • 2012-11-01
    • 1970-01-01
    • 2017-01-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-06-05
    相关资源
    最近更新 更多