如果你沒有提交給gdb(實際上,它是在mac os作爲默認工具鏈的一部分而被棄用),你可以玩lldb。
所以,像這樣的代碼:
program main
use mpi
integer error
integer id
integer p
call MPI_Init (error)
call MPI_Comm_size (MPI_COMM_WORLD, p, error)
call MPI_Comm_rank (MPI_COMM_WORLD, id, error)
write (*,*) 'Hello: ', id, '/', p
call MPI_Finalize (error)
stop
end
和編譯這樣
mpif90 -g -o fort ./fort.f90
,你應該能夠啓動LLDB以下方式
mpirun -np 2 xterm -e lldb ./fort
,這將給你兩個,分別與lldb運行xtermms
請注意,爲的xterm,你需要安裝XQuartz(https://www.xquartz.org)
更新:
我不知道這是否會與此特定問題上需要幫助,但你總是可以嘗試從源代碼編譯GDB。看看這裏說明如何做到這一點:Building GDB on macOS Sierra
然後,您可以使用xterm和gdb和你的MPI這樣的代碼
mpirun -np 2 xterm -e gdb ./mpi_sample
運行的mpirun現在,你可以看到,仍有與警示dyld版本,但代碼似乎工作正常。
但儘管如此,問題是,什麼將與ifort編譯後的代碼發生:(對我來說,我使用:
mpifort --version
GNU Fortran (GCC) 6.3.0
Copyright (C) 2016 Free Software Foundation, Inc.
This is free software; see the source for copying conditions. There is NO
warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
gdb --version
GNU gdb (GDB) 8.0
Copyright (C) 2017 Free Software Foundation, Inc.
mpirun --version
mpirun (Open MPI) 2.0.2
來源
2017-06-30 11:18:40
mko
請告訴你如何編譯你的代碼*必須*告訴。編譯器用'-g'生成調試符號,另外,還有多種不同格式的動態庫和調試符號,gdb可能不支持你當前的設置 –
感謝你的回答,我用mpif90 -ggdb test.f90然後我跑了使用mpirun -n 2 ./a.out。 – diex
另外我試了mpif90 -g main.f90 。它沒有工作。 – diex