Попробуйте подключить отладчик к процессу и отключите его при нарушениях прав доступа.
Если это невозможно, то мы используем инструмент под названием «Дампер процесса пользовательского режима», чтобы создать дамп памяти процесса в точке, где произошло нарушение доступа. Вы можете найти это для загрузки здесь:
http://www.microsoft.com/downloads/details.aspx?FamilyID=E089CA41-6A87-40C8-BF69-28AC08570B7E&displaylang=en
Как это работает: вы настраиваете правила для отдельных процессов (или, необязательно, для всей системы) и получаете инструмент, создающий либо мини-дамп, либо полный дамп в точке, где он обнаруживает любое из списка исключений - один из них является нарушением прав доступа. После создания дампа приложение продолжает работать как обычно (и поэтому, если нарушение прав доступа не обрабатывается, вы увидите это диалоговое окно).
Обратите внимание, что ВСЕ нарушения доступа в вашем процессе фиксируются - даже те, которые впоследствии обрабатываются, также полный дамп может создать время для создания в зависимости от объема памяти, используемого приложением (10-20 секунд для процесса потребляет 100-200 МБ личной памяти). По этой причине, вероятно, не стоит включать его в масштабе всей системы.
Затем вы сможете проанализировать дамп с помощью таких инструментов, как WinDbg (http://www.microsoft.com/whdc/devtools/debugging/default.mspx), чтобы выяснить, что произошло - в большинстве случаев вы обнаружите, что вам нужен только мини-дамп, а не полный дамп (однако, если ваш приложение не использует много памяти, тогда нет большого количества недостатков наличия полного дампа, кроме размера дампа и времени, которое требуется для создания дампа).
Наконец, имейте в виду, что отладка нарушений прав доступа с помощью WinDbg может быть довольно сложным и сложным процессом - если вы можете получить трассировку стека другим способом, то вы можете попробовать это в первую очередь.