================
@@ -277,6 +286,143 @@ lldb::addr_t ProcessFreeBSDKernel::FindSymbol(const char 
*name) {
   return sym ? sym->GetLoadAddress(&GetTarget()) : LLDB_INVALID_ADDRESS;
 }
 
+void ProcessFreeBSDKernel::ShowCrashInfo() {
+  Target &target = GetTarget();
+  Debugger &debugger = target.GetDebugger();
+
+  if (!debugger.GetCommandInterpreter().IsInteractive())
+    return;
+
+  Status error;
+
+  // Find msgbufp symbol (pointer to message buffer)
+  lldb::addr_t msgbufp_addr = FindSymbol("msgbufp");
+  if (msgbufp_addr == LLDB_INVALID_ADDRESS)
+    return;
+
+  // Read the pointer value
+  lldb::addr_t msgbufp = ReadPointerFromMemory(msgbufp_addr, error);
+  if (!error.Success() || msgbufp == LLDB_INVALID_ADDRESS)
+    return;
+
+  // Get the type information for struct msgbuf from DWARF
+  TypeQuery query("msgbuf");
----------------
Michael137 wrote:

How common is it to have debug-info for msgbuf available in a typical workflow 
that uses this? And on the flipside, is it important to support the 
no-debuginfo case? The answer to these will inform us about the usefulness of 
both these codepaths.

`msgbuf` a pretty generic name and is not namespaced, so looking it up globally 
and then relying on it seems like it would subtly go wrong once in a while. If 
we do want to stick to DWARF then we should bail out if the field names dont 
match, instead of going ahead with the memory reads.

But I'd be curious to see if we can get away with just relying on hardcoded 
offsets.

BTW the common practice is for reviewers to resolve comment threads to ensure 
the comment has been satisfactorily addressed.

https://github.com/llvm/llvm-project/pull/178027
_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to