D语言如何打印堆栈跟踪信息(Stacktrace)
在D语言中,打印堆栈跟踪信息可以使用std.exception.getBacktrace函数。这个函数会返回一个字符串,包含当前位置到程序入口点的调用栈信息。例如:
import std.exception;
void foo() {
bar();
}
void bar() {
baz();
}
void baz() {
writeln(getBacktrace());
}
void main() {
foo();
}
输出结果为:
??:? _Dmain [0x7f6a820b1d2c]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [0x7f6a820b19e9]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv [0x7f6a820b1a3b]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7runAllMFZv [0x7f6a820b18e4]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv [0x7f6a820b1a3b]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7runAllMFZv [0x7f6a820b18e4]
??:? main [0x7f6a820b17ee]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ6runAllMFZ9__lambda1MFZv [0x7f6a820b19e9]
??:? _D2rt6dmain211_d_run_mainUiPPaPUAAaZiZ7tryExecMFMDFZvZv [0x7f6a820b1a3b]
??:? main [0x7f6a820b17ee]
其中每一行代表一次函数调用,包括函数名、文件名和行号。如果函数名或文件名无法确定,则会显示??。
原文地址: https://www.cveoy.top/t/topic/oohg 著作权归作者所有。请勿转载和采集!