[Lldb-commits] [lldb] daba823 - Refine error msgs from CommandObject & Disassemble
Jason Molenda via lldb-commits
lldb-commits at lists.llvm.org
Wed Mar 2 11:17:56 PST 2022
Author: Jason Molenda
Date: 2022-03-02T11:17:48-08:00
New Revision: daba82362228b4aa460c26079c028ebf832066fd
URL: https://github.com/llvm/llvm-project/commit/daba82362228b4aa460c26079c028ebf832066fd
DIFF: https://github.com/llvm/llvm-project/commit/daba82362228b4aa460c26079c028ebf832066fd.diff
LOG: Refine error msgs from CommandObject & Disassemble
Make it clearer for end users why a command cannot be used
when a process is not stopped, etc.
Differential Revision: https://reviews.llvm.org/D120594
Added:
Modified:
lldb/include/lldb/Interpreter/CommandObject.h
lldb/source/Commands/CommandObjectDisassemble.cpp
lldb/test/Shell/Commands/command-disassemble.s
Removed:
################################################################################
diff --git a/lldb/include/lldb/Interpreter/CommandObject.h b/lldb/include/lldb/Interpreter/CommandObject.h
index ce741296dce75..45fc47b02c046 100644
--- a/lldb/include/lldb/Interpreter/CommandObject.h
+++ b/lldb/include/lldb/Interpreter/CommandObject.h
@@ -326,15 +326,20 @@ class CommandObject {
}
virtual const char *GetInvalidProcessDescription() {
- return "invalid process";
+ return "Command requires a current process.";
}
- virtual const char *GetInvalidThreadDescription() { return "invalid thread"; }
+ virtual const char *GetInvalidThreadDescription() {
+ return "Command requires a process which is currently stopped.";
+ }
- virtual const char *GetInvalidFrameDescription() { return "invalid frame"; }
+ virtual const char *GetInvalidFrameDescription() {
+ return "Command requires a process, which is currently stopped.";
+ }
virtual const char *GetInvalidRegContextDescription() {
- return "invalid frame, no registers";
+ return "invalid frame, no registers, command requires a process which is "
+ "currently stopped.";
}
// This is for use in the command interpreter, when you either want the
diff --git a/lldb/source/Commands/CommandObjectDisassemble.cpp b/lldb/source/Commands/CommandObjectDisassemble.cpp
index e3c40ed73cf63..b02e071e7ac4f 100644
--- a/lldb/source/Commands/CommandObjectDisassemble.cpp
+++ b/lldb/source/Commands/CommandObjectDisassemble.cpp
@@ -278,11 +278,20 @@ CommandObjectDisassemble::GetContainingAddressRanges() {
llvm::Expected<std::vector<AddressRange>>
CommandObjectDisassemble::GetCurrentFunctionRanges() {
+ Process *process = m_exe_ctx.GetProcessPtr();
StackFrame *frame = m_exe_ctx.GetFramePtr();
if (!frame) {
- return llvm::createStringError(llvm::inconvertibleErrorCode(),
- "Cannot disassemble around the current "
- "function without a selected frame.\n");
+ if (process) {
+ return llvm::createStringError(
+ llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "function without the process being stopped.\n");
+ } else {
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "function without a selected frame: "
+ "no currently running process.\n");
+ }
}
SymbolContext sc(
frame->GetSymbolContext(eSymbolContextFunction | eSymbolContextSymbol));
@@ -301,11 +310,20 @@ CommandObjectDisassemble::GetCurrentFunctionRanges() {
llvm::Expected<std::vector<AddressRange>>
CommandObjectDisassemble::GetCurrentLineRanges() {
+ Process *process = m_exe_ctx.GetProcessPtr();
StackFrame *frame = m_exe_ctx.GetFramePtr();
if (!frame) {
- return llvm::createStringError(llvm::inconvertibleErrorCode(),
- "Cannot disassemble around the current "
- "line without a selected frame.\n");
+ if (process) {
+ return llvm::createStringError(
+ llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "function without the process being stopped.\n");
+ } else {
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "line without a selected frame: "
+ "no currently running process.\n");
+ }
}
LineEntry pc_line_entry(
@@ -361,11 +379,20 @@ CommandObjectDisassemble::GetNameRanges(CommandReturnObject &result) {
llvm::Expected<std::vector<AddressRange>>
CommandObjectDisassemble::GetPCRanges() {
+ Process *process = m_exe_ctx.GetProcessPtr();
StackFrame *frame = m_exe_ctx.GetFramePtr();
if (!frame) {
- return llvm::createStringError(llvm::inconvertibleErrorCode(),
- "Cannot disassemble around the current "
- "PC without a selected frame.\n");
+ if (process) {
+ return llvm::createStringError(
+ llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "function without the process being stopped.\n");
+ } else {
+ return llvm::createStringError(llvm::inconvertibleErrorCode(),
+ "Cannot disassemble around the current "
+ "PC without a selected frame: "
+ "no currently running process.\n");
+ }
}
if (m_options.num_instructions == 0) {
diff --git a/lldb/test/Shell/Commands/command-disassemble.s b/lldb/test/Shell/Commands/command-disassemble.s
index 1feff0b878c8e..10ce8354025ac 100644
--- a/lldb/test/Shell/Commands/command-disassemble.s
+++ b/lldb/test/Shell/Commands/command-disassemble.s
@@ -6,13 +6,13 @@
# RUN: -s %S/Inputs/command-disassemble.lldbinit -o exit 2>&1 | FileCheck %s
# CHECK: (lldb) disassemble
-# CHECK-NEXT: error: Cannot disassemble around the current function without a selected frame.
+# CHECK-NEXT: error: Cannot disassemble around the current function without a selected frame: no currently running process.
# CHECK-NEXT: (lldb) disassemble --line
-# CHECK-NEXT: error: Cannot disassemble around the current line without a selected frame.
+# CHECK-NEXT: error: Cannot disassemble around the current line without a selected frame: no currently running process.
# CHECK-NEXT: (lldb) disassemble --frame
-# CHECK-NEXT: error: Cannot disassemble around the current function without a selected frame.
+# CHECK-NEXT: error: Cannot disassemble around the current function without a selected frame: no currently running process.
# CHECK-NEXT: (lldb) disassemble --pc
-# CHECK-NEXT: error: Cannot disassemble around the current PC without a selected frame.
+# CHECK-NEXT: error: Cannot disassemble around the current PC without a selected frame: no currently running process.
# CHECK-NEXT: (lldb) disassemble --start-address 0x0
# CHECK-NEXT: command-disassemble.s.tmp`foo:
# CHECK-NEXT: command-disassemble.s.tmp[0x0] <+0>: int $0x10
More information about the lldb-commits
mailing list