У меня есть приложение WinForms, в котором я хочу иметь возможность редактирования HTML. Поэтому я перевел Lutz Roeder's HTML Writer из C# в VB.NET и преобразовал его из формы Windows в пользовательский элемент управления пользователя, который теперь размещен в дочерней форме MDI.Как найти источник неуправляемого исключения?
Все работает нормально, пока не закрою родительский MDI, и в этом случае он сработает, и я не могу отловить исключение.
Я выделил элемент управления редактором в небольшое приложение WinForms от Vanilla, которое ничего не делает и проверяет, что проблема все еще происходит.
Я также включил неуправляемого кода отладки (я использую VS2010, компиляции для x86 и Framework 3.5), и все это я получаю это:
Windows has triggered a breakpoint in HtmlEditorMdi.exe.
This may be due to a corruption of the heap, which indicates a bug in HtmlEditorMdi.exe or any of the DLLs it has loaded.
This may also be due to the user pressing F12 while HtmlEditorMdi.exe has focus.
The output window may have more diagnostic information.
Единственное другое, что я имею заметил, что если я оставлю длинный интервал после открытия формы, содержащей редактор, она не сработает.
Что я действительно ценю, это некоторые идеи о том, как искать эту проблему. Возможно, я ошибся в преобразовании C# в VB, но я изо всех сил пытаюсь понять, где искать.
Edit:
Я запустить приложение с отладчиком прилагается, и это не дает мне ничего полезного.
Все, что я получаю в Windows «Application перестал работать» сообщение, с этим в деталях проблемы:
Problem signature:
Problem Event Name: APPCRASH
Application Name: HtmlEditorMdi.exe
Application Version: 1.0.0.0
Application Timestamp: 4cfb74c7
Fault Module Name: mscorwks.dll
Fault Module Version: 2.0.50727.4952
Fault Module Timestamp: 4bebd49a
Exception Code: c0000005
Exception Offset: 000022b5
OS Version: 6.1.7600.2.0.0.256.1
Locale ID: 2057
Additional Information 1: 0a9e
Additional Information 2: 0a9e372d3b4ad19135b953a78882e789
Additional Information 3: 0a9e
Additional Information 4: 0a9e372d3b4ad19135b953a78882e789
Я вижу, что это нарушение прав доступа, но даже если я иду Debug> Исключения > Исключения Win32 и галочка c0000005, я не получаю ничего полезного, когда он ломается - просто «нет источника».
Не можете ли вы присоединить отладчик с помощью VS и найти исключение, которое бросается? Неуправляемые исключения обычно содержат больше информации в массиве «Detail» внутри них. – Darbio 2010-12-05 12:10:18
Чтобы подключить (из памяти), это Debug> attach to process, а затем загрузить любые символы, которые вам нужны (файл .pdb). – Darbio 2010-12-05 12:10:56