Xcode中MPI项目如何将lldb附加至编译程序进行调试?
解决Xcode中MPI项目调试断点无法触发的问题
针对你遇到的调试器绑定到mpiexec而非目标程序的问题,有以下几种实用方案:
方案一:手动附加lldb到运行中的目标进程
- 正常启动你的MPI项目(点击Xcode的Run按钮,此时程序会运行但不会触发断点)
- 点击Xcode顶部菜单栏的
Debug→Attach to Process by PID or Name - 在弹出的对话框中,输入你的目标程序名称(比如
myprogram),或者从下方的进程列表中找到对应进程,点击Attach - 附加完成后,你的断点会正常触发;如果程序已经执行到断点之后的逻辑,需要重启程序并尽快完成附加操作
方案二:让MPI进程启动后等待lldb附加
修改Scheme的启动参数,让mpiexec启动每个目标进程时暂停,直到lldb附加:
- 打开
Edit Scheme→Run→Arguments - 将原启动参数替换为:
-np 4 xcrun lldb --wait-for ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_NAME} - 启动程序后,每个
myprogram进程会处于等待状态,此时按照方案一的步骤逐个附加进程即可调试
方案三:在Xcode调试控制台自动附加目标进程
- 保持原Scheme设置(可执行文件为
mpiexec,启动参数为-np 4 ${BUILT_PRODUCTS_DIR}/${EXECUTABLE_NAME}) - 启动程序前,打开Xcode的调试控制台(底部的
Debug Console) - 在控制台中输入以下lldb命令并回车:
process attach --name myprogram --waitfor - 启动程序,lldb会自动检测到
myprogram进程启动并完成附加,断点即可正常触发
注意:如果启动了多个MPI进程(比如4个),你需要重复执行附加操作来调试每个进程,Xcode支持同时调试多个进程实例。
内容的提问来源于stack exchange,提问作者FueledByPizza
相关产品推荐
相关产品推荐

