прерывать всякий раз, когда файл (или класс) введен - PullRequest
18 голосов
/ 30 октября 2008

Есть ли в Visual Studio какой-либо способ прерывать работу отладчика при вводе определенного файла (или класса)? Пожалуйста, не отвечайте «просто установите точку останова в начале каждого метода» :)

Я использую C #.

Ответы [ 23 ]

0 голосов
/ 12 февраля 2009

Вы можете использовать Debugger.Launch() и Debugger.Break() в сборке System.Diagnostics

0 голосов
/ 30 октября 2008

Не то, чтобы я знал. Лучшее, что вы можете сделать - это поставить точку останова в каждом методе файла или класса. Что ты пытаешься сделать? Вы пытаетесь выяснить, какой метод вызывает что-то изменить? Если это так, возможно, точка останова данных будет более подходящей.

0 голосов
/ 12 февраля 2009

ЕСЛИ вы говорите о C ++, то вы, вероятно, можете сойти с рук (чертовски много работы), установив точку останова в коде преамбулы в CRT, или написав код, который изменяет код преамбулы на Вставьте туда INT 3 только для функций, сгенерированных из рассматриваемого класса ... Это, кстати, МОЖЕТ быть сделано во время выполнения ... Вам нужно, чтобы сгенерированный PE-файл изменил сам себя, возможно, до перемещения, чтобы прикрепить все там перерыв ...

Мое единственное другое предложение - написать макрос, который использует предопределенный макрос __FUNCTION__, в котором вы ищите любую функцию, являющуюся частью рассматриваемого класса, и, если необходимо, вставляете

__asm { int 3 }

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

Я бы подумал, что подобный хак может быть использован для определения того, какой ФАЙЛ вы вводите, но вам все равно придется размещать ВАШ макрос функции по всему вашему коду, иначе он никогда не будет вызван, и, ну, в значительной степени это то, что вы не сделали не хочу делать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...