我正在试图通过OpenFOAM应用程序(在这种情况下,icoFoam,但这个问题通常适用于任何OpenFOAM应用程序。)
我想使用gdb逐步执行并行运行的分析(比方说,2个过程)。
要简单地并行启动应用,我输入:
mpirun -np 2 icoFoam -parallel
现在我想在gdb中逐步完成它。但我无法并行启动icoFoam并进行调试,因为我无法弄清楚如何在应用程序开始执行之前设置断点。
我知道我可以做的一件事是在MPI_Initialize之后插入一段代码(等待(和无限循环)),直到我更改gdb中的某个变量。然后我将并行运行应用程序,将gdb会话附加到每个PID,并愉快地调试。但我宁愿不必改变OpenFOAM源并重新编译。
那么,我怎样才能启动并行运行的应用程序,有些如何让它停止(比如在main的开头),然后在gdb中逐步执行它?所有这些都没有改变原始的源代码?
最诚挚的问候, 松糕。