Вопрос

У меня есть проект C++ WIN32.Я нашел проблему, что какой -то символ может быть распознан WindBG, но некоторые нет.Я не знаю почему.Характеристики:

1) оба являются методом С++

2) обе функции находятся в одном файле .cpp.

3) эти две функции очень близки в исходном файле, и ни одна из них они заключены в #ifdef

4) Я использовал dbh.exe для проверки символа, символ отсутствует в Windbg также отсутствует в PDB-файле.

Я предполагаю, что отсутствующий символ может быть из-за наследования класс?Подскажите, пожалуйста, спасибо!Бин

Это было полезно?

Решение

Если вы не используете функцию, если она не является виртуальной функцией, она может быть заблокирована компоновщиком. Неиспользуемые объекты глобальных данных также могут быть заблокированы.

Другие советы

Функция когда-либо вызывалась?

Это может помочь дать более подробную информацию о том, почему вы думаете, что это "из-за наследования класса"

Похоже, исходный код может быть несовместим с файлами PDB.

Возможно, функция была добавлена ​​после создания файла PDB?

Вы можете подтвердить это:

  1. Добавьте точку останова в строку кода, которая, как вы знаете, будет выполнена.
  2. Пройдитесь по коду и убедитесь, что отладчик не останавливается на пустых строках кода (это может означать несоответствие между кодом и файлом PDB).

Первое, что я бы посоветовал, — это пересобрать исходный код, чтобы посмотреть, решит ли это проблему.

Если это не помогло, предоставьте дополнительную информацию, чтобы мы могли помочь вам в дальнейшей диагностике.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top