Наклон разыскивает нарушение прав доступа 0xC00000FD

Насколько я знаю, там четыре платформы, доступные для поблочного тестирования с.NET в эти дни

  • , NUnit
  • MbUnit
  • MSTest
  • xUnit

NUnit всегда отсутствовал впереди, но разрыв закрылся в прошлом году или около этого. Я все еще предпочитаю NUnit сам, тем более, что они добавили быстрый интерфейс некоторое время назад, который делает тесты очень читаемыми.

, Если Вы просто начинаете с поблочным тестированием он, это, вероятно, не имеет большого значения. Как только Вы до скорости, Вы будете в лучшем положении для оценки, какая платформа является лучшей для потребностей.

6
задан Ether 2 February 2010 в 04:52
поделиться

3 ответа

Где переполнение стека из заголовка вашего вопроса? Нарушения доступа обычно указывают на недопустимое разыменование указателя.

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

5
ответ дан 10 December 2019 в 02:49
поделиться

В Visual Studio есть возможность где-то сломаться при первом исключении (не помню, где именно, возможно пункт меню исключения в подменю отладки?) Вы хотите включить это и смотреть на свои стеки вызовов в тот момент, когда они возникают.

Существует также возможность включить Microsoft Symbol Server, который будет автоматически загружать совпадающие символы для любой системной dll, которую вы случайно видите в стеке. (извините, я тоже не помню, как именно это было настроено).

0
ответ дан 10 December 2019 в 02:49
поделиться

Я буду использовать свои психические навыки отладки и сообщите вам, что вы перезаписываете буфер, который живет в стеке - в частности, вы пишете слишком много нулей в буфер, который не достаточно большой, чтобы удержать его.

У вас есть классические симптомы разбитого стека - первый AV, который вы попадаете, пытается получить доступ к нулю минус несколько байтов - четко смещение от вашего указателя стека в ваши параметры или ваши локальные переменные. (Я никогда не могу помнить, какие из них выше указателя стека, и какие из них ниже.) Затем у вас есть куча строк, которые указывают на указатель инструкции, был установлен на ноль, что часто происходит, потому что адреса возврата функций в рамках стека был перезаписан нулевыми значениями - потому что вы перезаписали буфер на основе стека и повредил все остальные важные вещи на стеке. По мере того, как ваша программа пытается вернуться из текущей функции, она смотрит в стеке, чтобы увидеть, откуда он думает, из-за нуля и прыгает прямо там. Упс!

Так как ваш стек разбит, вы не можете найти трассировку стека слишком полезным; Ваши рамки стека могут быть повреждены этим моментом.

2
ответ дан 10 December 2019 в 02:49
поделиться
Другие вопросы по тегам:

Похожие вопросы: