mirror of
https://github.com/pybind/pybind11.git
synced 2025-01-31 07:10:30 +00:00
include backtrace in pybind11::detail::error_string (#494)
This commit is contained in:
parent
219b10ac99
commit
5e1c0445cf
@ -127,6 +127,23 @@ PYBIND11_NOINLINE inline std::string error_string() {
|
||||
if (scope.value)
|
||||
errorString += (std::string) handle(scope.value).str();
|
||||
|
||||
PyErr_NormalizeException(&scope.type, &scope.value, &scope.trace);
|
||||
|
||||
if (scope.trace) {
|
||||
PyFrameObject *frame = ((PyTracebackObject *) scope.trace)->tb_frame;
|
||||
if (frame) {
|
||||
errorString += "\n\nAt:\n";
|
||||
while (frame) {
|
||||
int lineno = PyFrame_GetLineNumber(frame);
|
||||
errorString +=
|
||||
" " + handle(frame->f_code->co_filename).cast<std::string>() +
|
||||
"(" + std::to_string(lineno) + "): " +
|
||||
handle(frame->f_code->co_name).cast<std::string>() + "\n";
|
||||
frame = frame->f_back;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return errorString;
|
||||
}
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user