Нужна помощь в подключении gdb к моему проекту

Я использую VS2k8 для написания и компиляции (но не запуска) программы с использованием библиотек MPICH2 в Vista x64. Затем я использую mpiexec из командной строки для запуска программы (только с 1 процессом для целей отладки), и я хотел бы подключить к ней gdb. Простое использование attach или gdb --pid=### не работает (я получаю сообщение об ошибке Can't attach to process), предположительно потому, что VS не компилирует код с правильной информацией об отладке. С другой стороны, несмотря на несколько сеансов Google, мне еще предстоит найти настоящую командную строку, которую VS использует для компиляции, поэтому я не могу просто войти и отредактировать ее.

Обратите внимание, что единственная причина, по которой я использую VS, заключается в том, что я не мог заставить g++ найти библиотеки MPI при попытке скомпилировать из командной строки, тогда как VS потребовалась всего пара кликов, чтобы все заработало. (Да, я пробовал переключатели -I и -l, но безрезультатно)

Все, что мне нужно, это присоединить gdb к процессу, выполняющему мою MPI-программу, мне все равно, как это делается. Любая помощь приветствуется.


person suszterpatt    schedule 28.08.2009    source источник
comment
Было бы неплохо задать второй вопрос (не редактируйте этот) относительно компиляции MPI (что бы это ни было) с использованием g++ в Windows, если это то, что вы действительно хотите сделать.   -  person    schedule 28.08.2009


Ответы (2)


Бинарные форматы cl.exe (Visual Studio) и gdb, к сожалению, несовместимы. Вы не сможете использовать gdb для отладки, если не найдете способ пересобрать код с помощью gcc. Тем временем вы можете отлаживать свою программу непосредственно с помощью Visual Studio, перейдя в Инструменты > Присоединить к процессу (или нажав Ctrl+Alt+P)

person marshall_law    schedule 28.08.2009
comment
К сожалению, программа работает только при запуске через mpiexec, так что отладка из VS тоже не тривиальна. Я полагаю, что пока буду использовать cout для отладки своего кода. :) - person suszterpatt; 28.08.2009
comment
Почему бы не подключить отладчик VS к вашему процессу после того, как вы запустили его через mpiexec? - person mmmmmmmm; 28.08.2009

gdb не будет работать, но вы можете использовать Gflags, чтобы программа запускается из отладчика (VS, windbg,...) всякий раз, когда она запускается. Существует также параметр реестра, чтобы сделать это напрямую: HKLM\SOFTWARE\Microsoft\Windows NT\CurrentVersion\Image File Execution Options\ImageFileName\Debugger

person Nemanja Trifunovic    schedule 28.08.2009