Отображение кода сборки на код VB6 - PullRequest
2 голосов
/ 16 мая 2011

Я работаю над устаревшим приложением VB6.В определенном случае использования приложение завершается с чем-то, что выглядит как исключение нулевого указателя:

Инструкция по адресу «0x2982e900» ссылается на память по адресу «0x00000156».Память не может быть «прочитана».

Я попытался отладить исходный код, но не могу найти строку исходного кода, которая выдает исключение.Есть ли способ найти строку исходного кода, которая соответствует адресу инструкции по сборке, например, 0x2982e900?(Я пробовал Reflector, но кажется, что он поддерживает только .NET).

Обновление:

Когда я отлаживаю приложение с помощью отладчика VB6 IDE, я не получаю никаких разрывов вИсточник VB6.Вместо этого появляется сообщение об ошибке Windows, упомянутое выше, давая мне возможность включить отладчик Visual Studio 2010.Если я сделаю это, отладчик VS2010 отобразит код сборки следующим образом:

[...]
2982E8FA push eax
2982E8FB вызов 29832E9B
2982E900 mov ax, word ptr [eax + 156h]
[...]

Приложение использует некоторые файлы .ocx от компании Infragistics для реализации GUI.Согласно утилите CrashFinder приведенный код сборки взят из файла IGTOOLBARS40.OCX.

Ответы [ 2 ]

3 голосов
/ 16 мая 2011

Как и в управляемом .Net-коде, код VB6 не может встретиться с недопустимыми исключениями указателей (поскольку VB6 не содержит указателей).

Проблема, скорее всего, вызвана либо

  • Ошибка в DLL или OCX (возможно, сторонней?)
  • Ошибка при вызове Windows API. Чаще всего через оператор Declare, иногда через библиотеку типов ( hard-core! ).

Первый шаг - определить, какая строка кода VB6 вызывает сбой.

Или:

  • Пройдите через IDE, пока не произойдет сбой.
  • Или декодируйте адрес 0x2982e900 в номер строки источника VB6 с помощью CrashFinder . Вы всегда собираете свой EXE-файл с помощью PDB-файла , который содержит символов отладки , верно?

    Чтобы сообщить IDE VB6 о создании проекта с отладочной информацией, вам нужно изменить один из параметров компиляции по умолчанию. В меню «Файл» выберите «Build Project1.exe». Нажмите кнопку «Параметры» в открывшемся диалоговом окне сохранения файла, и откроется окно свойств. Перейдите на вкладку «Компиляция» и установите флажок «Создать символическую отладочную информацию».

Ensure that

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

Вы можете попробовать пересмотреть приложение, используя дизассемблер, такой как IDA Pro.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...