Я работаю со сборками смешанного режима в C++ / CLI. Весь режим автоматического управления собрался, pdb's загружается, когда успешно в сборке смешанного режима, но собственный dll's и pdb's не становятся загруженными даже при том, что информацию собственного pdb's показывают в области Modules (т.е. в Отладке VS-> Windows-> Модули).
Я использую собственный dll и вызываю его экспортируемую функцию в смешанном блоке в C++ / код CLI. Здесь, функции вызваны успешно, но собственные pdb символы не загружаются, и все точки останова в собственном коде показываются полым кругом, и подсказки говорит, что нет никаких символов, загруженных для этого.
Я сделал все, pdb помещенный в текущий каталог туда, где управляемый процесс запускается; удаленный весь obj и папки отладки и перекомпилированный каждый проект одновременно; я даже использовал утилиту ChkMatch, которая показывает, что символы в Exe и соответствующем pdb соответствуют.
Там какой-либо путь состоит в том, чтобы включить точки останова собственного кода при вызове от управляемого (C++/LCI режим Mixed) кода?
С уважением,
Usman
Отладка в смешанном режиме может быть то удачной, то неудачной, в основном неудачной. Сначала проверьте, действительно ли у вас включена отладка в смешанном режиме. В проекте C# это Project + Properties, Debug, Enabled unmanaged code debugging check box. Далее, отладка в смешанном режиме не включена для 64-битных процессов. Если вы работаете на 64-битной операционной системе, убедитесь, что вы заставили .exe запускаться в 32-битном режиме. Project + Properties, вкладка Build, Platform Target = x86.
Далее проверьте, где отладчик искал файлы .pdb. В окне Debug + Windows + Modules щелкните DLL правой кнопкой мыши и выберите "Symbol load information". Последнее средство - использовать __debugbreak() в неуправляемом коде.