Есть ли способ узнать имя класса, из которого вызывается метод объекта в C ++? - PullRequest
2 голосов
/ 23 августа 2010

Предположим, что в методе MA () класса A метод MB () класса B вызывается после создания объекта. Есть ли способ узнать в MB () имя класса и метод, из которого он вызывается в C ++ ??

Ответы [ 2 ]

3 голосов
/ 23 августа 2010

То, о чем вы говорите, это Трассировка стека .

Определение трассировки стека:

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

Этот вопрос SO по «Как можно получить трассировку стека в C?» имеет ответ, который вам нужен.

1 голос
/ 23 августа 2010

Более простой и общий способ будет следующим:

a) Включить трассировку вывода на основе условий времени выполнения (например, определенной переменной среды) / переключателя отладки

b) Записывать вход и выход каждой функции вместе с идентификатором потока (для работы с многопоточными приложениями). Для этого используйте директивы препроцессора __FILE__ and __LINE__.

в) Анализ журналов с помощью хорошего приложения для просмотра журналов (например, DebugView в Windows)

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