diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java index bd2ce6327c..91c6597818 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/modules/ModuleRow.java @@ -40,17 +40,20 @@ public class ModuleRow { } } + public static String computeShortName(String path) { + int sep = path.lastIndexOf('\\'); + if (sep > 0 && sep < path.length()) { + path = path.substring(sep + 1); + } + sep = path.lastIndexOf('/'); + if (sep > 0 && sep < path.length()) { + path = path.substring(sep + 1); + } + return path; + } + public String getShortName() { - String name = module.getName(); - int sep = name.lastIndexOf('\\'); - if (sep > 0 && sep < name.length()) { - name = name.substring(sep + 1); - } - sep = name.lastIndexOf('/'); - if (sep > 0 && sep < name.length()) { - name = name.substring(sep + 1); - } - return name; + return computeShortName(module.getName()); } public String getName() { diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerLegacyStackPanel.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerLegacyStackPanel.java index c076f5f5a7..d413fc0e3c 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerLegacyStackPanel.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerLegacyStackPanel.java @@ -60,6 +60,7 @@ public class DebuggerLegacyStackPanel extends JPanel { LEVEL("Level", Integer.class, StackFrameRow::getFrameLevel), PC("PC", Address.class, StackFrameRow::getProgramCounter), FUNCTION("Function", ghidra.program.model.listing.Function.class, StackFrameRow::getFunction), + MODULE("Module", String.class, StackFrameRow::getModule), COMMENT("Comment", String.class, StackFrameRow::getComment, StackFrameRow::setComment, StackFrameRow::isCommentable); private final String header; @@ -292,6 +293,8 @@ public class DebuggerLegacyStackPanel extends JPanel { pcCol.setCellRenderer(boldCurrentRenderer); TableColumn funcCol = columnModel.getColumn(StackTableColumns.FUNCTION.ordinal()); funcCol.setCellRenderer(boldCurrentRenderer); + TableColumn modCol = columnModel.getColumn(StackTableColumns.MODULE.ordinal()); + modCol.setCellRenderer(boldCurrentRenderer); TableColumn commCol = columnModel.getColumn(StackTableColumns.COMMENT.ordinal()); commCol.setCellRenderer(boldCurrentRenderer); } diff --git a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPanel.java b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPanel.java index c36264fa4c..9ab01273dd 100644 --- a/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPanel.java +++ b/Ghidra/Debug/Debugger/src/main/java/ghidra/app/plugin/core/debug/gui/stack/DebuggerStackPanel.java @@ -40,6 +40,7 @@ import ghidra.framework.plugintool.annotation.AutoServiceConsumed; import ghidra.program.model.address.Address; import ghidra.program.model.listing.Function; import ghidra.trace.model.Trace; +import ghidra.trace.model.modules.TraceModule; import ghidra.trace.model.stack.TraceObjectStackFrame; import ghidra.trace.model.target.TraceObject; import ghidra.trace.model.target.TraceObjectValue; @@ -83,7 +84,22 @@ public class DebuggerStackPanel extends AbstractObjectsTableBasedPanel { + @Override + public String getColumnName() { + return "Module"; + } + + @Override + public String getValue(ValueRow rowObject, Settings settings, Trace data, + ServiceProvider serviceProvider) throws IllegalArgumentException { + TraceObjectValue value = + rowObject.getAttributeEntry(TargetStackFrame.PC_ATTRIBUTE_NAME); + return value == null ? null : provider.getModule(value.castValue()); } } @@ -98,6 +114,7 @@ public class DebuggerStackPanel extends AbstractObjectsTableBasedPanel