Visual Studio. Как собрать DLL (в командной строке), чтобы отладка работала путем присоединения к процессу?

Visual Studio.
Как собрать DLL (в командной строке), чтобы отладка работала путем присоединения к процессу?
Насколько я знаю, вот что я делаю.

Чтобы собрать файлы * .cpp, я поставил эти флаги
кл / зи / од

Чтобы сделать DLL, я поставил эти
ссылка / DEBUG

У меня есть десятки файлов cpp, которые позже превращаются в DLL.
Но присоединение к процессу отладки не работает …

Должен ли я поставить больше флагов? Как проверить саму библиотеку DLL, если она имеет достаточно отладочной информации или нет?

Спасибо!

0

Решение

У вас есть файл PDB для DLL? Содержит ли он отладочную информацию для всех объектов?
Компилируете ли вы файлы с помощью cl / c, кроме параметров, упомянутых ниже.
Являются ли ваши результаты вашей компиляции — объекты скопированы куда-то перед тем, как связать их.
Pdbs также скопированы?

Это различные причины, вызывающие вашу проблему

  1. Вы копируете объекты в какой-либо каталог, прежде чем связывать их. Файлы pdbs не доступны при линковке.
  2. Некоторая очистка перед связыванием приводит к удалению PDB.

Предполагая, что у вас есть 3 файла a.cpp, b.cpp & c.cpp, это то, что вы можете попробовать

cl /c /Zi /Fd c:\mypath\mydll.pdb a.cpp
cl /c /Zi /Fd c:\mypath\mydll.pdb b.cpp
cl /c /Zi /Fd c:\mypath\mydll.pdb c.cpp

link /DEBUG fullpathtoa\a.obj fullpathtob\b.obj fullpathtob\c.obj whatever other options.

Затем скопируйте pdb и dll оба & попробуйте отладить его.

Другое дело, что в большинстве отладчиков у вас есть диалоговое окно, которое показывает все загруженные двоичные файлы и соответствующие загруженные PDB.

Например,

Binary      PDB
a.exe       c:\abc\a.pdb
b.dll       c:\pqr\b.pdb
c.dll       Default symbols loaded.

Загруженные символы по умолчанию означают, что он не нашел PDB. Вы можете щелкнуть правой кнопкой мыши и т. Д. & укажите отладчику путь PDB, соответствующий c.pdb

В Visual Studio вы увидите вышеупомянутое в Параметре меню отладки -> Windows -> Модули.
В столбце «Состояние символа» будет показан путь к PDB или «Символы по умолчанию загружены». Что это показывает для вашей DLL?

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]