底线问题:是否有可能让Xcode等待应用程序启动,然后从Xcode外部启动应用程序,然后让Xcode停在断点处?
- 详细说明如下 -
我想调试(逐行逐行)一个简单的C程序,它需要使用10.8.5上的Xcode 4.6.3将文本传送到stdin.
为了做到这一点,我需要像这个$ cat in.txt |一样启动程序 ./mysimpleprogram> out.txt并让Xcode调试器在断点处停止.
我按照我在本答复/sf/answers/910464341/中找到的说明进行操作,但Xcode不会在断点处停止.
重现问题
打开Xcode 4.6.3
在"欢迎使用Xcode"屏幕中选择"创建新的Xcode项目"
在"为新项目选择模板"屏幕中,选择Mac OS X - >应用程序 - >命令行工具,然后单击下一步
在"为新项目选择选项:"屏幕产品名称:HelloWorld,类型:C - >下一步,使用自动引用计数= False
选择项目的位置.
注意:在Xcode首选项 - >位置 - >派生数据中,我选择了"相对"
转到产品菜单 - >方案 - >编辑方案
在Scheme Editing窗口的左侧,默认选择"Run HelloWorld Debug".在"方案编辑"窗口的右侧,我将"自动启动"单选按钮更改为"等待HelloWorld启动".Debugger = LLDB,Debug Process As = me
在代码中设置一个或多个断点.
选择产品 - >运行(或单击"播放"按钮).现在主要的Xcode窗口显示"等待HelloWorld启动".
打开一个终端窗口并导航到HelloWorld可执行文件,在我的例子中.../HelloWorld/DerivedData/HelloWorld/Build/Products/Debug/
使用./HelloWord命令运行程序
该程序运行并打印Hello,World!正如预期的那样,Xcode说"完成了运行HelloWorld:HelloWorld".它并没有停留在任何断点上.
期望的行为,Xcode应该停在断点处,并允许我单步执行代码.
感谢您提供任何帮助或提示.
Mat*_*ens 11
在调试器注意到并附加到您的流程所花费的时间内,流程的执行已经超过了断点.要在此设置中从调试器获得确定性行为,您需要在第一个断点之前暂停执行流程并等待调试器附加.一种简单的方法是添加代码来发送STOP信号:
raise(SIGSTOP);
Run Code Online (Sandbox Code Playgroud)
执行将在此时停止,调试器将在附加时自动继续.
| 归档时间: |
|
| 查看次数: |
2816 次 |
| 最近记录: |