перенаправить вывод 'where' в dbx - PullRequest
2 голосов
/ 20 августа 2010

Я пытаюсь получить стеки вызовов, ведущие к функции func, каждый раз, когда она вызывается в моем исполняемом файле, и я не против, если способ получить это будет медленным или неэффективным, если он автоматизирован(потому что «func» получают тысячи раз).У меня есть доступ к dbx, поэтому я подумал, что могу сделать что-то вроде этого:

(dbx) { when in func { where -q; }; } | awk '{ print }' > out.txt 

, но я не вижу вывод стеков вызовов на консоли или в файле (я подтвердил, что функцияполучить удар).В документации по dbx говорится, что 'where' - это команда без перенаправления, но мне интересно, есть ли какие-нибудь обходные пути, которые люди использовали для этого?

1 Ответ

1 голос
/ 07 сентября 2010

Некоторые команды dbx должны принимать аргументы с метасимволами оболочки.Например: print (a <34) </p>

Для таких команд вы можете поставить перенаправление перед командой: (dbx)> / tmp / t print (a <34) </p>

"перенаправление справки "в командной строке dbx объяснит это.

В вашем примере команда 'where' принимает имена функций в качестве аргументов, которые (в c ++) могут использовать символы <и>.Так что он попадает в эту особую категорию.

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

...