6个版本 (3个重大更改)
新 0.5.1 | 2024年8月10日 |
---|---|
0.5.0 | 2023年5月10日 |
0.4.1 | 2023年4月19日 |
0.2.0 | 2023年1月27日 |
0.1.0 | 2022年12月16日 |
#98 in 调试
每月 98次下载
28KB
634 行
MPIGDB
围绕mpiexec、gdbserver和gdb的一个包装器,通过适度的进程数量使调试MPI程序更加容易。
示例用法
GDB扩展和有用命令
此包装器定义了几个GDB扩展命令,可以帮助使事情更容易。
mpic
继续所有进程
mpict
继续当前线程,并在有停止的下一个线程上切换(如果有的话)
mpip
使用 -t $tid
在所有或子集线程上打印
mpib
使用 -t $tid
在所有或子集线程上设置断点
mpiw
当所有进程退出时执行一个命令
您可能还应该了解以下内置命令
thread apply all
将命令应用于所有线程
continue &
在GDB中,任何以 &
结尾的命令都在“后台”运行命令,允许用户继续与GDB交互。在这种情况下,在后台继续此线程
info threads
获取线程及其状态的列表
interupt
如果当前线程正在运行,则停止它。
thread $tid
切换到线程ID
CLI参数
--mpigdb_frontend
要使用的调试前端,默认为gdb
。还接受vscode
以支持为VSCode编写launch.json文件--mpigdb_dbg_arg
将参数传递给GDB--mpigdb_helper
工作节点上的MPI GDB辅助程序的路径--mpigdb_gdbserver
工作节点上的gdbserver辅助程序的路径。默认 "gdbserve"--mpigdb_gdb
gdb可执行文件路径。默认: "gdb"--mpigdb_port
主进程连接的端口。默认 "8000"--mpigdb_mpi_flag
传递给mpigdb的标志--mpigdb_dryrun
打印命令,但不启动mpigdb
标志 --interpreter=mi
和 --tty=
将转发给GDB,希望将来能在VSCode中使用。
示例
mpigdb-np8 -- ./play/build/heatdist
使用8个进程启动heatdist。
mpigdb-np8 --mpigdb_dbg_flag-x--mpigdb_dbg_flag/tmp/debug.dbg-- ./play/build/heatdist
使用脚本 /tmp/debug.dbg 在8个进程上启动heat dist
mpigdb--mpigdb_gdb cuda-gdb--mpigdb_gdbserver cuda-gdbserver-np8 -- ./play/build/heatdist
相同,但使用cuda-gdb调试GPU程序
构建和安装
依赖
gdb
12.1或更高版本,带有gdbserver
(有时单独打包)和python支持,如果从源代码编译,可能已禁用- 包括mpiexec
mpiexec
的MPI安装 - python 3.8或更高版本
- Rust+Cargo 1.65或更高版本
早期版本可能也可以工作,但未经过测试
限制和已知错误
对于具有有意义规模的HPC系统,我们可能需要与PMIx集成,但我们目前还没有这样做。
目前与LLDB不兼容,LLDB是MacOS所必需的 -- 欢迎PR。
对VSCode的支持有限。 查看有关完整实现的某些问题的issue。
致谢
感谢@mystery-e204和他的mpidb
工具,该工具演示了如何生成可用于VSCode的文件。这种方法有限,因为VSCode中的调试实例是分开的,并且不能很容易地一起控制。
依赖
~2–13MB
~156K SLoC