2013-10-26 5 views
0

Я написал оболочку в C. Есть некоторые проблемы при запуске некоторых программ на нем. Как я могу запустить программу на оболочке при отладке оболочки в gdb?Отладка программы, запускающей другую программу

+1

Необходимо приложить некоторые усилия, прежде чем размещать здесь вопрос. –

ответ

1

Первое использование -g вариант для компиляции с флагами отладки, для использования с gdb.

Затем запустить.

gdb shellapp 
... 
run someapps 
... 

Для быстрого чтения How to Debug C Program using gdb in 6 Simple Steps и GDB Tutorial

Или вы имеете в виду run a program in the background?

+1

Нужно использовать программу-компилятор, используя '-g' –

+0

Привет, спасибо за редактирование;) –

+0

:) приветствую вас. –

1

Вы можете прикрепить gdb к уже запущенному процессу оболочки с другой консоли. Таким образом, ваш вывод оболочки не будет мешать выходу gdb, и вы можете запускать программы в оболочке, как обычно.

  1. Запустите выполнение оболочки в 1-ом окне консоли
  2. Открыть 2-й консоли и найти Pid число уже работает оболочки с помощью ps команды
  3. Start gdb на 2-й консоли и attach обстреливать, используя его PID число, например, это:

    : ~ $ GDB -q
    (GDB) присоединять 3479
    Установка для обработки 3479

  4. Теперь вы можете установить точки останова и продолжить выполнение оболочки:

    (GDB) б SomeFunction
    (GDB) C
    продолженного.

С этого момента у вас есть 2 консоли:

  • тот, где оболочка запущена
  • и второй, где gdb пробеги прикреплен к оболочке

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

+0

Я не понимаю, что вы говорите ... объясните немного больше. –

+0

@Grijesh Chauhan, я имею в виду, что отлаживать интерактивную оболочку с той же консоли, где работает gdb, сложно отлаживать интерактивную оболочку, поскольку сам gdb является интерактивным. Выход из gdb и shell будет смешиваться, и это создает трудности при отладке. – ks1322

+0

Пожалуйста, объясните. Это то, что мне нужно. – mohit

Смежные вопросы