2014-10-14 2 views
-3

У меня есть приложение Delphi XE2 (32 бит), которое работает на компьютере под управлением Windows 8, но дает ошибку нарушения прав доступа в 64-разрядной версии Windows 7 с 6 ГБ ОЗУ ,Нарушение прав доступа Delphi XE2 в Win 7 64 бит, но не в Win 8

Я бы понял, если бы я был доступ к большому объему данных, но он просто заявляет, что-то как:

Access violation at address 0000CD31. Read of address 00000000. 

Адрес всегда последователен. Так читается адрес.

Обычно из того, что Ive читает, это указатель, пытающийся получить доступ к части памяти, которая больше не действительна/используется. Но я сомневаюсь, почему это работает на Windows 8, а не на Windows 7 64 бит ...

Я не смог воспроизвести это на локальной виртуальной машине (одинаковые Windows на том же языке, если это проблема языка) и это происходит только на ПК клиента.

Другая, даже самая худшая проблема заключается в том, что я отлаживаю это для рабочего коллеги, поэтому у меня нет доступа к коду и я не могу попробовать другую функцию (исправление, которое я прочитал здесь), чтобы узнать, или нет. Поэтому я не могу использовать что-то вроде madExpert для фактического отладки кода. Мне нужно что-то удаленное, что может сообщить мне, что информация о программе полностью соблюдена и работает удаленно, когда происходит нарушение прав доступа.

+1

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

+0

У меня нет прямого доступа к коду, и программист, который работает в этом разделе, сейчас находится на прогулке из-за травмы. Я предположил madExpert, как вы можете видеть, потому что я думаю, что это лучший способ решить эту проблему, но если у меня нет доступа к коду, нет никакого способа сделать это. – riahc3

+2

С вами не так много смысла, так как даже если вы можете определить проблему, которую вы не можете исправить, потому что вы не можете построить новый исполняемый файл –

ответ

1

Если вы не можете построить в нечто вроде madexcept, ваши варианты импов ограничены

  • WER
  • ProcDump
  • перепроектировать к Адресная исходному коду

От те самые, самые легкие procdump

procdump -ma -w yourprocess 

После получения дампа, вы можете проанализировать его с windbg

!analyze -v 

Это должно показать вам трассировки стека, что приводит к проблеме.

+0

Пытаясь получить автономный windbg, но человек, трудно одиночество. Вам необходимо установить весь SDK ... – riahc3

+0

Это не обязательно. Если вы можете потратить время, взгляните на инструменты дефрагментации на канале 9 о том, как создать собственный накопитель большого пальца USB, готовый для отладки * ([Серия Andrew Richards] (http://channel9.msdn.com/Shows/Defrag- Инструменты/Defrag-Tools-Building-your-USB-thumbdrive)) * –

+0

Попробуем посмотреть, что, хотя я просто сломал руку сегодня ... – riahc3