ฉันต้องตอบ curmudgeon ผลผลิตของฉันไม่เคยได้รับการปรับปรุงโดยคำแนะนำใด ๆ ข้างต้น พวกเขาช้าและมีราคาแพงเมื่อเทียบกับตัวเลือกที่ฉันต้องการในแบบคู่ขนาน: หนึ่งเซสชัน gdb ต่อกระบวนการ gdb แต่ละตัวสามารถเชื่อมต่อกับกระบวนการ MPI และนั่งใน xterm (เกิดขึ้นโดยอัตโนมัติใน PETSc ที่ใช้-start_in_debugger
) ฉันใช้มันมา 15 ปีอย่างมีความสุข คัดค้าน:
1) ฉันไม่สามารถดูข้อมูลทั่วโลกได้
เนื่องจาก MPI เป็นรุ่นที่ไม่มีผู้ใช้ร่วมกันจึงไม่มีข้อมูลทั่วโลกเป็นข้อมูลภายในเครื่องเท่านั้น
2) กลยุทธ์นี้ไม่ได้ขยายไปสู่กระบวนการจำนวนมาก
ไม่มีข้อบกพร่อง บั๊กเกิดขึ้นในแต่ละกระบวนการอาจมีอินพุตจาก 1 หรือ 2 เพื่อนบ้าน คุณสามารถวางไข่ gdb ได้อย่างง่ายดายเฉพาะในกระบวนการที่เข้าร่วม (ใน PETSc ที่คุณใช้-debugger_nodes 0,5,17
เป็นต้น) นอกจากนี้ระบบดังกล่าวข้างต้นยังให้ประโยชน์อย่างมากเมื่อเรียกใช้ในทุกกระบวนการซึ่งทำให้ช้าลง ในความเป็นจริงแล้ววิธีการ gdb นั้นสามารถปรับขนาดได้มากกว่า
gdb ยังพกพาได้มาก มันทำงานได้ทุกที่เข้าใจ C ++ และ Fortran และอนุญาตให้คุณรันโค้ดโดยพลการในการรัน ฉันได้เขียนฟังก์ชั่นพิเศษเพื่อแสดงข้อมูลได้อย่างง่ายดายเมื่อทำงานในนั้น