我试图让调用堆栈导致函数func,每次在我的可执行文件中调用它时,我不介意这样做的方法是慢还是低效,只要它是自动化的(因为'func'被击中数千次)。我可以访问dbx,所以我想我可以这样做:
(dbx) { when in func { where -q; }; } | awk '{ print }' > out.txt
但是我没有在控制台或文件中看到调用堆栈输出(我已经确认函数正在被命中)。 dbx的文档声明'where'是一个不可重定向的命令,但我想知道是否有人曾经使用过任何变通办法?
答案 0 :(得分:1)
某些dbx命令需要接受具有shell元字符的参数。 例如:print(a< 34)
对于这样的命令,您可以在命令之前放置重定向: (dbx)> / tmp / t print(a< 34)
dbx命令行上的“帮助重定向”将解释它。
在您的示例中,'where'命令接受函数名作为参数, (在c ++中)可以使用<和>字符。所以它属于这个特殊类别。
不幸的是,在命令之前无法使用管道操作。 因此,您需要使用涉及临时文件的不同方案 你想要什么。我在上面提到的帮助主题中有一些例子。