Я работаю с Visual Studio 2010, используя и .exe (без исходного кода, поэтому я вижу только ассемблер).
Код, из которого он был сгенерирован, похож на этот (не совсем, он имеет неизвестные незначительные изменения):
int main() {
int points = 1000;
int games = 0;
srand ((unsigned int) time(NULL)); // random seed
while(true) {
games++;
playGame(&points, games);
keepPlaying();
}
return 0;
}
Плюс два названных метода (очень простые).
Теперь, когда я пытаюсь отладить .exe, я открываю его, нажимаю F11 и все идет хорошо.
Я начинаю читать код, размещаю некоторые контрольные точки, определяю основные, …
Но когда я остановил его и попытался перейти к первой точке останова, нажав F5, я обнаружил, что моя программа загружена в другое место в памяти. Поэтому я не могу найти ни одной из точек останова (которые указывают на неиспользуемую память).
В других случаях я иду по строке с F10 / F11, пока не найду точки останова. Иногда я их нашел (и они включены), но я снова пытаюсь выполнить, пока не достигну их (F5), и он проходит через них.
Кто-нибудь знает, могу ли я, например, заставить Visual Studio всегда размещать ассемблер в одном и том же месте памяти? Или что-нибудь, что позволило мне сохранить контрольные точки, чтобы мне не нужно было выполнять построчно каждый раз.
Ну, я как-то подумал об окольном круге … Если у кого-то еще есть такая же проблема, вы могли бы частично ее избежать, создав и пометив точки останова. Один из них на самой первой линии.
Например, вы можете разместить другой при вызове основного метода или в начале его.
Затем, вместо остановки и повторного запуска отладки, просто перейдите к первой точке останова и
Нажмите правой кнопкой мыши на инструкцию> Стабилизировать следующую инструкцию.
Однако это может вызвать проблемы с данными (и, скорее всего, так и будет), поэтому будьте осторожны.
Это сработало для меня, но, вероятно, только потому, что я использовал это для очень простой задачи.
Других решений пока нет …