Многопоточный отладчик
GDB имеет серьезные проблемы при отладке с несколькими потоками (pthreads). Есть ли другие хорошие многопоточные отладчики для C/C++ на *nix?
6 ответов
Лично у меня не было особых проблем с GDB при отладке многопоточного приложения, поэтому вам может быть полезно уточнить, какие именно "проблемы" у вас возникли. Это поможет нам лучше ответить вам.
В прошлом я использовал несколько вспомогательных средств при отладке многопоточных приложений в linux, большинство из которых основаны на GDB, а не заменяют его. Они включают:
- DDD http://www.gnu.org/software/ddd/
- Затмение http://www.eclipse.org/
- Инструмент трассировки собственной библиотеки потоков POSIX (NTPL) http://nptltracetool.sourceforge.net/
Кроме того, если вы новичок в отладке в Linux (и даже если нет), я настоятельно рекомендую статью под названием "Отладка приложений Linux", которую вы можете найти здесь:
http://www.scribd.com/doc/3009706/Debugging-Linux-Applications
Allinea DDT... графический отладчик для скалярных, многопоточных и крупномасштабных параллельных приложений, написанных на C, C++ и Fortran.
TotalView - это то, что национальные лаборатории используют для огромных кластеров. Я считаю, что он также имеет хорошую поддержку параллелизма потоков. Вероятно, это вне вашего ценового диапазона, но вы можете попробовать это бесплатно.
Из моего поиска я не нашел хороших многопоточных отладчиков для *nix. GDB, похоже, становится лучше, и в прошлый раз, когда мне приходилось отлаживать многопоточное приложение во FreeBSD (7.0-RELEASE), оно вело себя довольно хорошо, что позволило мне найти причину ошибки.
Отладчик AIX для Windows позволяет отлаживать многопоточные приложения.
Однажды я искал альтернативу GDB, но, к сожалению, все, что я нашел, были основаны на GDB. Я думаю, это потому, что gdb тесно связан с gcc, и сторонним отладчикам сложно следить за каждым изменением gcc.