Debugger: Improvements to crash report generator.
- If debug information is available for a given stack frame, show the corresponding source file path and line number in the crash report.
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
/*
|
/*
|
||||||
* Copyright 2012-2013, Rene Gollent, [email protected].
|
* Copyright 2012-2014, Rene Gollent, [email protected].
|
||||||
* Distributed under the terms of the MIT License.
|
* Distributed under the terms of the MIT License.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
@@ -490,10 +490,30 @@ DebugReportGenerator::_DumpDebuggedThreadInfo(BString& _output,
|
|||||||
BString data;
|
BString data;
|
||||||
for (int32 i = 0; StackFrame* frame = trace->FrameAt(i); i++) {
|
for (int32 i = 0; StackFrame* frame = trace->FrameAt(i); i++) {
|
||||||
char functionName[512];
|
char functionName[512];
|
||||||
data.SetToFormat("\t\t%#08" B_PRIx64 "\t%#08" B_PRIx64 "\t%s\n",
|
BString sourcePath;
|
||||||
frame->FrameAddress(), frame->InstructionPointer(),
|
|
||||||
UiUtils::FunctionNameForFrame(frame, functionName,
|
target_addr_t ip = frame->InstructionPointer();
|
||||||
sizeof(functionName)));
|
FunctionInstance* functionInstance;
|
||||||
|
Statement* statement;
|
||||||
|
if (fTeam->GetStatementAtAddress(ip,
|
||||||
|
functionInstance, statement) == B_OK) {
|
||||||
|
BReference<Statement> statementReference(statement, true);
|
||||||
|
|
||||||
|
int32 line = statement->StartSourceLocation().Line();
|
||||||
|
LocatableFile* sourceFile = functionInstance->GetFunction()
|
||||||
|
->SourceFile();
|
||||||
|
if (sourceFile != NULL) {
|
||||||
|
sourceFile->GetPath(sourcePath);
|
||||||
|
sourcePath.SetToFormat("(%s:%" B_PRId32 ")",
|
||||||
|
sourcePath.String(), line);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
data.SetToFormat("\t\t%#08" B_PRIx64 "\t%#08" B_PRIx64 "\t%s %s\n",
|
||||||
|
frame->FrameAddress(), ip, UiUtils::FunctionNameForFrame(
|
||||||
|
frame, functionName, sizeof(functionName)),
|
||||||
|
sourcePath.String());
|
||||||
|
|
||||||
_output << data;
|
_output << data;
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user