在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]

其中每一行代表一次函数调用,包括函数名、文件名和行号。如果函数名或文件名无法确定,则会显示??

D语言如何打印堆栈跟踪信息(Stacktrace)

原文地址: https://www.cveoy.top/t/topic/oohg 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录