2016-09-12 2 views
0

Мне передали эту гигантскую базу кода, написанную на C, что мне нужно пройти и найти определенную функцию, чтобы я мог ее перестроить и модифицировать. Поскольку этот код длиной в сотни тысяч строк, вы можете себе представить, что этот процесс довольно медленный. У меня есть идея, как ускорить его, но я не знаю, возможно ли это. У меня есть что-то, похожее на это:Visual Studio можно разбить, когда тип сначала используется?

struct A{ 
    /* some data */ 
}; 

struct B{ 
    A* a; 
    /* some data */ 
}; 
/* note A and B are defined in different files */ 

Я хочу Visual Studio, чтобы сломать, когда B-> а сначала присваивается/модифицированный на произвольном экземпляре В. Возможно ли это сделать в Visual Studio Professional 2012?

+0

Можете ли вы поставить точку останова в конструкторе? – kichik

+0

К сожалению, это не так просто. Конструктор инициализирует это значение значением 'NULL', а другой код затем присваивает это значение. Думаю, я мог бы установить точку останова для конструктора и пройти через нее с этого момента, чтобы помочь, но не совсем получить меня, что я хочу. – Cody

+0

Когда он запускается, вы можете установить контрольную точку памяти на 'B-> a', а затем дождаться, когда она будет запущена. – kichik

ответ

2

Вы можете установить точку останова для конструктора для типа B (или эквивалент конструктора в коде C). Когда эти триггеры, вы можете установить точку останова памяти на B->a и дождаться, когда она будет запущена.

+0

OP хотел сломать доступ к * любому * 'B :: a'. Установка точки останова возможна только в * специфическом * 'B :: a' в конкретном объекте' B', что совсем другое. – AnT

+0

Да, это будет работать только в том случае, если существует разумное количество экземпляров 'B'. – kichik

+0

@ В моем исследовании указывается, что это невозможно, но установка точки останова при первом вызове конструктора сообщает мне, где экземпляр сначала создается, а вторая точка останова дает мне нужные мне данные. Хотя он прямо не отвечает на мой вопрос, это дает мне обходное решение, которое делает мой вопрос ненужным, поэтому я все еще принимаю это. – Cody