Как вы получаете NVCC, чтобы включить информацию определения макроса? - PullRequest
1 голос
/ 15 мая 2011

Обычно с помощью gcc вы можете указать уровень отладочной информации с помощью -g, и если вы используете -g3, он будет включать определения макросов препроцессора в исполняемый файл, которые отладчики, такие как gdb, могут читать и позволять вам использовать во время отладки. Я хотел бы сделать это с помощью nvcc для отладки программ CUDA.

В настоящее время я работаю, изменяя шаблонную программу в SDK, поэтому я использую Makefile по умолчанию и common.mk, включенные в Makefile. В common.mk в блоке 'ifeq ($ (dbg), 1)' я пробовал следующее:

  • поставить -g3 под COMMONFLAGS
  • поставить -g3 под NVCCFLAGS
  • поставить -g3 под CXXFLAGS и CFLAGS
  • положить --compiler-options -g3 под NVCCFLAGS.

Первые два дают нераспознанную ошибку опции. Вторые два, похоже, не работают, потому что когда я отлаживаю с помощью cuda-gdb, я не получаю информацию о макросах.

Причина, по которой я хотел бы сделать это, заключается в том, что я хотел бы проверить некоторую память, используя те же макросы, которые сама программа использует для доступа к этой памяти. Например,

 #define ARROW(state, arrow) ((c_arrow_t *)(&((state)->arrows) + (arrow) * sizeof(c_arrow_t)))                                                                                                  
 #define STATE(nfa, state) ((c_state_t *)(&((nfa)->states) + (state) * sizeof(c_state_t))) 

- некоторые макросы, которые я использую для доступа к состояниям и стрелкам недетерминированного автомата конечных состояний.

Спасибо за помощь!

1 Ответ

1 голос
/ 15 мая 2011

Вам, вероятно, нужно передать оба параметра -g в nvcc, чтобы он собирался с отладкой хоста, и также передать -g3 компилятору хоста через -Xcompiler (или --compiler-options).

Просто наблюдение, но вы действительно не должны использовать этот make-файл SDK ни для чего. Это действительно зло - грубый сломанный взлом некоторых автоинструментов, сгенерированных заявлениями, который является излишне сложным и очень негибким. Даже разработчики NVIDIA, с которыми я общаюсь, предупреждают, чтобы они не использовались.

...