Saya harus memberikan jawaban kurmudgeon. Produktivitas saya belum pernah ditingkatkan oleh salah satu saran di atas. Mereka lambat dan mahal dibandingkan dengan pilihan pilihan saya secara paralel: satu sesi GBB per proses. Setiap gdb dapat terhubung ke proses MPI dan duduk dalam xterm (ini terjadi secara otomatis dalam penggunaan PETSc -start_in_debugger
). Saya telah menggunakan ini selama 15 tahun, dengan senang hati. Keberatan:
1) Saya tidak bisa melihat data global
Karena MPI adalah model shared-none, tidak ada data global, hanya data lokal
2) Strategi ini tidak skala untuk banyak proses
Tidak melakukan bug. Bug terjadi pada proses individu, mungkin dengan masukan dari 1 atau 2 tetangga. ANDA dapat dengan mudah menelurkan gdb hanya pada proses yang berpartisipasi (dalam PETSc yang Anda gunakan -debugger_nodes 0,5,17
misalnya). Juga, sistem di atas banyak menyerah ketika dijalankan pada setiap proses, yang membuatnya lambat. Metode gdb sebenarnya lebih scalable.
gdb juga sangat portabel. Ini berjalan di mana-mana, memahami C ++ dan Fortran, dan memungkinkan Anda untuk mengeksekusi kode arbitrer di dalam proses. Saya telah menulis fungsi khusus untuk dengan mudah menampilkan data saat berjalan di dalamnya.