Xcode/lldb:在进入程序时停止没有符号的应用程序
在lldb命令行中,我可以使用--stop at entry选项停止程序(没有调试符号)的执行,方法是写入:Xcode/lldb:在进入程序时停止没有符号的应用程序,xcode,lldb,Xcode,Lldb,在lldb命令行中,我可以使用--stop at entry选项停止程序(没有调试符号)的执行,方法是写入: (lldb) target create /bin/ls Current executable set to '/bin/ls' (x86_64). (lldb) process launch --stop-at-entry Process 22250 launched: '/bin/ls' (x86_64) Process 22250 stopped * thread #1: tid
(lldb) target create /bin/ls
Current executable set to '/bin/ls' (x86_64).
(lldb) process launch --stop-at-entry
Process 22250 launched: '/bin/ls' (x86_64)
Process 22250 stopped
* thread #1: tid = 0xc46fa, 0x00007fff5fc01028 dyld`_dyld_start, stop reason = signal SIGSTOP
frame #0: 0x00007fff5fc01028 dyld`_dyld_start
dyld`_dyld_start:
-> 0x7fff5fc01028: popq %rdi
...
然而,我更愿意在lldb的Xcode(5)IDE中工作。在那里也可能发生同样的事情吗?我可以通过“调试->附加到进程->按进程标识符或名称”菜单成功附加到进程。如果您在那里输入一个应用程序名称,lldb将在该进程启动后立即接管该进程。但是,我看不到在程序启动时停止执行的方法,也就是说,相当于--start at entry。我也看不到在IDE的lldb窗口中输入相应命令的方法,因为应用程序尚未启动
在IDE中是否可以这样做?不确定您正在尝试做什么,但lldb确实有一个在共享库加载时停止的设置:
(lldb) settings set target.process.stop-on-sharedlibrary-events 1
这将导致lldb正在调试的程序在加载新的共享库时停止。在第一次加载共享库之前,这个过程不会进行太多操作,因此这将在很早的时候捕获它。您可以在~/.lldbinit Xcode文件中放置特定于lldb Xcode的设置命令,它们将只应用于从Xcode调用的lldb实例 这有助于保持单独的设置 发件人: 档案 lldb将同时从三个文件中读取设置/别名/命令 启动,如果存在的话 首先,它将读取~/.lldbinit调试器命令文件。如果你是 使用lldb命令行界面,这是~/.lldbinit lldb。如果 您正在GUI调试器(如Xcode)中使用lldb这将是 ~/.lldbinit Xcode
完全可行,至少在Xcode 7下
在现有的Xcode项目中,创建一个新模式。在模式设置中的“运行”下,指定“其他可执行文件”并选择所需的文件。在模式属性中,您还可以指定命令行、工作目录、自定义环境等。不,我认为这是不可能的,因为Xcode实际上是用于调试您正在开发的应用程序的,调试符号很容易应用。好的,这很有意义。谢谢谢谢,这很有帮助!在这么早的阶段停止对于在以后的函数上设置断点很有用。如果设置了断点,如何删除此设置?每次都会停止,但不运行。只需将其设置为1:0并运行命令即可。解决了这个问题。