【发布时间】:2017-10-29 05:04:13
【问题描述】:
通常堆栈跟踪(回溯)是从调用特殊堆栈跟踪生成函数的点生成的(例如此处的_Unwind_Backtrace:Android NDK: getting the backtrace)。是否可以生成还包含 libc 函数的堆栈跟踪?例如,我想在从我的程序调用“open”libc 调用时检查堆栈跟踪(不修改 libc 库)。我知道在 Java 中可以调用一些引发异常的方法,并从引发异常的点获取异常处理程序中的堆栈跟踪。我想在 C 中做类似的事情,但我认为这是不可能的,因为 C 中甚至没有例外。
【问题讨论】:
-
建议用参数
-ggdb编译你的程序然后用参数-ggdb链接你的程序然后运行gdb <your program name>。在任何时候(在单步执行程序时,如果您想要回溯,请输入“bt”。但是请注意,除非您的操作系统的源文件对gdb可见,否则gdb可以显示 VERY关于系统文件内容的小信息。
标签: android c linux stack-trace libc