Файл отладочного дампа VC10, созданный при помощи procxp (MS Process Explorer) — только информация о стеке без значения переменной

В основном я создаю файл дампа:

  1. Под отладкой: VC10 Debug-> Сохранить дамп как …
  2. В выпуске: Procexp-> щелкните правой кнопкой мыши -> Сохранить дамп -> Создать полный дамп …

Через 1, я могу открыть файл дампа с помощью VC10 (путь к символам, отладочный исходный файл полностью настроен), я могу увидеть всю информацию о стеке с исходным кодом, а также значение всей переменной.

Через 2 я могу открыть файл дампа с помощью VC10 (путь к символам, отладочный исходный файл полностью настроен), я могу увидеть всю информацию о стеке с исходным кодом НО значений всех переменных там нет.
Даже если я поместил локальную переменную в окно Debug Watch, там написано: ошибка: символ «xxx» не найден.
Как мне это исправить на 2?

Как мне настроить отладку дампа?

Для пути символа:

Действие-> Задать пути к символам -> добавить путь pdb для отладки & Выпустите папку для моего проекта, а также с использованием Microsoft Symbol Servers.

Для пути отладки источника:

Дамп решения проекта -> Свойство-> Отладка исходных файлов -> Добавить папку моего проекта

Кстати: для того же файла дампа я также использовал WinDbg, и я также могу видеть всю информацию о стеке (после правильной установки символа и исходного пути).

Спасибо

0

Решение

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

Сборка релиза включает оптимизатор кода. Оно делает много вещи в вашем коде, но определенно первой жертвой являются локальные переменные. Они могут быть полностью удалены или сохранены в регистрах процессора. Если вам действительно нужно знать значение такой локальной переменной, то вам обычно нужно взглянуть на машинный код, чтобы выяснить, в каком регистре процессора он хранится. Это, однако, никогда не будет работать, если это в коде, который скрыт в трассировке стека, значение было бы помещено в стек где-то. Выяснить, где это почти невозможно.

Отладка оптимизированного кода — сложная задача, двух вариантов нет. Удалите ошибки в отладочной сборке, радуйся, Мэри, в выпускной сборке.

2

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

Спасибо за все хорошие отзывы, но я думаю, что сам нашел причину сегодня!

причина: Это была проблема сборки, некоторые компоненты, которые нужно использовать exe, были собраны неправильно!

Заметка: В моем случае «мини-дамп«7М а»полный дамп«112M выполняет ту же работу, обе созданы из procxp. И как только я загружаю их в VS, я получаю доступ к:

  1. Вся информация стека
  2. Вся переменная информация
  3. Он точно определяет точное местоположение, когда я переключаю стек на свой код
    из kernel32.dll! _UnhandleExceptionFiler.

По сути, пока вы устанавливаете VC10, как я делал выше & ниже, у вас должно быть все в порядке:

Для пути символа:

Действие-> Задать пути к символам -> добавить путь pdb для отладки & Выпустите папку для моего проекта, а также с использованием Microsoft Symbol Servers.

Для пути отладки источника:

Дамп решения проекта -> Свойство-> Отладка исходных файлов -> Добавить папку моего проекта

0

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