首页 文章

R session在附加lldb debuger时中止

提问于
浏览
1

我尝试使用 lldb 来调试我正在开发的R包中的seg错误错误 . 我已经在SO上看到了一些使用 lldb 来成功调试R包的其他问题 . 但我无法让它工作......

我首先启动一个新的 Rstudio 进程,并希望通过以下命令将 lldb 附加到 rsession 进程:

(lldb) process attach -name rsession

然后 Rstudio 会说"R Session Aborted"并且我在 lldb 中有以下消息:

Process 20658 stopped
* thread #1, queue = 'com.apple.main-thread', stop reason = signal SIGSTOP
    frame #0: 0x00007fffb69b2bf2 libsystem_kernel.dylib`__psynch_cvwait + 10
libsystem_kernel.dylib`__psynch_cvwait:
->  0x7fffb69b2bf2 <+10>: jae    0x7fffb69b2bfc            ; <+20>
    0x7fffb69b2bf4 <+12>: movq   %rax, %rdi
    0x7fffb69b2bf7 <+15>: jmp    0x7fffb69abcaf            ; cerror_nocancel
    0x7fffb69b2bfc <+20>: retq

甚至我将 c 命令输入 lldblldb 给我一条消息,表明进程正在恢复,但是 Rstudio 仍然被"R Session Aborted"搞定 .

(lldb) c
Process 20658 resuming
(lldb)

如果我单击 Rstudio 的开始新会话,我将有一个新的 rsession 进程,该进程未附加 lldb ....

我应该怎么做 rsession 使用 lldb

我目前正在使用mac Sierra 10.12.5

1 回答

  • 1

    这种方法对我有用

    在第一个终端窗口

    > lldb /Applications/RStudio.app/Contents/MacOS/RStudio
    (lldb) b fork
    (lldb) run
    # breakpoint hit - start second lldb
    # after running second lldb
    (lldb) cont                # first fork
    (lldb) cont                # second call to fork
    

    在第二个终端窗口

    lldb
    (lldb) pro at -n rsession -w
    Process 1428 stopped
    ....
    Executable module set to "/Applications/RStudio.app/Contents/MacOS/rsession".
    Architecture set to: x86_64-apple-macosx.
    (lldb) cont
    Process 1428 resuming
    (lldb)
    

    我在lldb里面,我没有得到关于会话失败的令人讨厌的消息 .

    更新:

    @Consistency报告可能需要在lldb中使用稍微不同的命令:

    (lldb) pro at -n rsession
    

相关问题