2013-11-19 3 views
0

Я пытаюсь создать скрипт, который будет:Использование GDB с командным файлом и аргументами

  1. запуска GDB
  2. набора подменять-путь
  3. прикрепиться к процессу PID
  4. установить некоторые контрольные точки

После просмотра интерент я создал скрипт под названием «gdbscript», который содержит:

set substitue-path <from> <to> 
show substitute-path 
attach $1 

Я называю этот скрипт:

$ gdb -x gdbscript --args 4269 

Это не работает. Любые идеи о том, как я могу использовать скрипт с gdb, а также передавать аргументы?

спасибо.

ответ

0

$1 не будет достаточно, это только первый аргумент -x.

Что вам нужно "[email protected]", которые в основном означает, что все аргументы, с сохраненной структурой (не превращая один аргумент "hello there" в hello и there Следующая запись показывает это в действии:.

pax> cat qq.sh 
echo set substitue-path FROM TO 
echo show substitute-path 
echo attach "[email protected]" 

pax> qq.sh -x gdbscript --args 4269 'hello there' 
set substitue-path FROM TO 
show substitute-path 
attach -x gdbscript --args 4269 hello there 

If, как вы указываете в комментарии, это последний аргумент, который вы хотите, а не все, вы можете использовать $BASH_ARGV:

pax> cat qq.sh 
echo set substitue-path FROM TO 
echo show substitute-path 
echo attach $BASH_ARGV 

pax> ./qq.sh -x gdbscript --args 4269 
set substitue-path FROM TO 
show substitute-path 
attach 4269 
+0

Мое намерение для прикрепления состоит в том, чтобы иметь только «прикрепить 4269», поэтому мне нужен только последний аргумент. – UserIq

+0

@ user3008084, это не было слишком ясно из вашего вопроса, но я добавил несколько подробностей, чтобы его охватить. – paxdiablo

+0

жаль, что он недостаточно ясен. Тем не менее, он не работает. Я добавил в скрипт 'attach $ BASH_ARGV', и я называю его как' gdb -x gdbscript -args 4269'. Я получаю 'gdbscript: 3: Ошибка в исходном файле команды: Illegal process-id: $ BASH_ARGV.' – UserIq

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