我想知道在一个巨大的应用程序里面打印某个消息.应用程序是如此庞大和陈旧,它使用所有可能的方式将文本打印到终端; 例如printf(),fprintf(stdout,...)等.
我写了在write()系统调用上设置了一个断点,但是由于使用write()的各种文件I/O操作,我遇到了太多的断点停止.
所以基本上我希望gdb在程序向终端输出内容时停止,但同时我不希望gdb在程序向文件写入内容时停止.
背景故事:在strace我运行程序时,我注意到'/ dev/urandom'正在被open编辑.我想知道这个调用的来源(它不是程序本身的一部分,它是系统的一部分).
所以,使用gdb,我试图在发出调用catch syscall open时中断(使用)程序执行open,所以我可以看到一个回溯.问题是open被调用很多次,比如数百次,所以我无法缩小打开/ dev/urandom的特定调用.我该如何缩小特定电话的范围?有没有办法按参数过滤,如果有,我该如何为系统调用做?
任何建议都会有所帮助 - 也许我认为这一切都是错的.