2010-02-05 3 views
4

Можно создать дубликат:
How to avoid entering library's source files while debugging in Qt Creator with gdb?автоматический пропуск/игнорирование внешнего кода в БГД

кто-нибудь знает, как сказать GDB только ввести код, который находится в вашем проекте? Я знаю, что отладчику трудно знать, что такое «в проекте» и что такое библиотека .... но я подумал, что некоторые наивные проверки могут помочь, например, не смотреть в файлы, которые не находятся в домашнем доме пользователей каталог. Я часто имею такой код:

MyFunction(complexVarable, complexvar); //passed by value 

и GDB настаивает на том, проходя через конструктор копирования двух переданных значений, но мне все равно о том, MyFunction. Какие-нибудь советы? Есть две части вопроса,

  1. игнорировать код, который не мой (не в домашней директории)
  2. пропустить копии для вызовов функций.

спасибо.

EDIT: btw Я использую emacs, возможно, есть некоторые инструменты, которые я пропустил, но я открыт для использования внешних интерфейсов gdb.

+1

'next' (вместо' step') и 'finish' могут быть полезны. По умолчанию «C-x C-a C-n' /' C-x C-a C-f »для последнего в режиме Emacs gud-gdb. – ephemient

ответ

1

По моему мнению, этого не может быть сделано. каждый проект имеет поток данных от одной функции к другой. gdb предназначен для работы с потоком данных. , так что если ваш проект находится где-то посреди потока, gdb can not поможет вам, так как функция evry имеет определенную цель делать с входными данными, которые он получает и выводит. все, что вы можете сделать, это создать одну и ту же функцию отдельно и воспроизвести сценарий, как если бы он работал в потоке, предоставляя необходимые ему входы и выводимые им данные.

+0

оставил этот вопрос на несколько дней, и я боялся, что это будет ответ. thanks n'way –

+0

@ChrisH: эта функциональность доступна как команда «skip» в новом gdb. На данный момент выпуск gdb 7.5 его не имеет, и вам нужно построить gdb из источников (еженедельные версии 7.5.50 работают и их легко построить). – nimrodm