gcc/gdb: Как встроить полный путь в исходный файл в отладочной информации?

Спецификации исключения не являются замечательно полезными инструментами в C++. Однако там/is/хорошее использование для них, если объединено со станд.:: неожиданный.

то, Что я делаю в некоторых проектах, является кодом со спецификациями исключения, и затем назовите set_unexpected () с функцией, которая выдаст специальное исключение моего собственного дизайна. Это исключение, на конструкцию, получает след (определенным для платформы способом) и получено из станд.:: bad_exception (чтобы позволить этому быть распространенным при желании). Если это вызывает оконечное () вызов, как это обычно делает, след печатается тем, что () (а также исходное исключение, которое вызвало его; не к трудно, чтобы найти, что) и таким образом, я получаю информацию того, где мой контракт был нарушен, такой как, какое неожиданное исключение библиотеки было выдано.

, Если я делаю это, я никогда не позволяю распространение исключений библиотеки (кроме станд.) и получаю все мои исключения из станд.:: исключение. Если библиотека решит бросить, то я поймаю и преобразую в свою собственную иерархию, позволяя, чтобы я всегда управлял кодом. Шаблонные функции, которые вызывают зависимые функции, должны избежать спецификаций исключения по очевидным причинам; но редко иметь шаблонный функциональный интерфейс с кодом библиотеки так или иначе (и немного библиотек действительно используют шаблоны полезным способом).

8
задан rti 15 August 2009 в 10:30
поделиться

1 ответ

Для какой платформы вы строите и каков собственный формат отладки для этой платформы? Не то чтобы эта информация обязательно приблизит вас к решению вашей проблемы, но, возможно, стоит взглянуть на спецификацию формата отладки, чтобы увидеть, имеет ли смысл то, что вы хотите сделать, с этой точки зрения.

Вы передаете ' -g 'параметр компилятора справа.

0
ответ дан 5 December 2019 в 23:16
поделиться
Другие вопросы по тегам:

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