未验证 提交 01f47282 编写于 作者: S Skylot

fix: forbid 'printStackTrace()' usage

上级 afdd37cd
......@@ -124,6 +124,12 @@
<module name="IllegalImport">
<property name="illegalClasses" value="jadx.core.utils.DebugUtils"/>
</module>
<module name="RegexpSinglelineJava">
<property name="id" value="printstacktrace"/>
<property name="format" value="\.printStackTrace\(\)"/>
<property name="ignoreComments" value="true"/>
<property name="message" value="Using Throwable.printStackTrace() is forbidden. Use logger to print exception"/>
</module>
</module>
<module name="NewlineAtEndOfFile"/>
......
......@@ -65,8 +65,8 @@ import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.fail;
public abstract class IntegrationTest extends TestUtils {
private static final Logger LOG = LoggerFactory.getLogger(IntegrationTest.class);
private static final String TEST_DIRECTORY = "src/test/java";
private static final String TEST_DIRECTORY2 = "jadx-core/" + TEST_DIRECTORY;
......@@ -150,7 +150,7 @@ public abstract class IntegrationTest extends TestUtils {
assertThat("File list is empty", files, not(empty()));
return getClassNodeFromFiles(files, clazz.getName());
} catch (Exception e) {
e.printStackTrace();
LOG.error("Failed to get class node", e);
fail(e.getMessage());
}
return null;
......@@ -194,7 +194,7 @@ public abstract class IntegrationTest extends TestUtils {
try {
d.load();
} catch (Exception e) {
e.printStackTrace();
LOG.error("Load failed", e);
d.close();
fail(e.getMessage());
return null;
......@@ -332,7 +332,7 @@ public abstract class IntegrationTest extends TestUtils {
runDecompiledAutoCheck(cls);
}
} catch (Exception e) {
e.printStackTrace();
LOG.error("Auto check failed", e);
fail("Auto check exception: " + e.getMessage());
}
}
......
......@@ -11,6 +11,7 @@ import jadx.tests.api.IntegrationTest;
import static jadx.tests.api.utils.JadxMatchers.containsOne;
import static org.hamcrest.MatcherAssert.assertThat;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestIssue86 extends IntegrationTest {
public static class TestCls {
......
......@@ -8,6 +8,7 @@ import jadx.tests.api.IntegrationTest;
import static jadx.tests.api.utils.JadxMatchers.countString;
import static org.hamcrest.MatcherAssert.assertThat;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestSwitchWithTryCatch extends IntegrationTest {
public static class TestCls {
void test(int a) {
......
......@@ -11,6 +11,7 @@ import jadx.tests.api.IntegrationTest;
import static jadx.tests.api.utils.JadxMatchers.containsOne;
import static org.hamcrest.MatcherAssert.assertThat;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestMultiExceptionCatch2 extends IntegrationTest {
public static class TestCls {
......
......@@ -8,6 +8,7 @@ import jadx.tests.api.IntegrationTest;
import static jadx.tests.api.utils.JadxMatchers.containsOne;
import static org.hamcrest.MatcherAssert.assertThat;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestTryCatch7 extends IntegrationTest {
public static class TestCls {
......
......@@ -7,6 +7,7 @@ import jadx.tests.api.IntegrationTest;
import static jadx.tests.api.utils.assertj.JadxAssertions.assertThat;
import static org.junit.jupiter.api.Assertions.assertTrue;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestTryCatchFinally extends IntegrationTest {
public static class TestCls {
......
......@@ -11,6 +11,7 @@ import jadx.tests.api.IntegrationTest;
import static org.hamcrest.CoreMatchers.containsString;
import static org.hamcrest.MatcherAssert.assertThat;
@SuppressWarnings("checkstyle:printstacktrace")
public class TestVariables4 extends IntegrationTest {
public static class TestCls {
......
package jadx.gui.device.debugger;
import java.io.IOException;
import java.lang.reflect.Type;
import java.nio.charset.StandardCharsets;
import java.nio.file.Files;
......@@ -15,6 +14,9 @@ import java.util.Map;
import java.util.Map.Entry;
import java.util.Objects;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.google.gson.Gson;
import com.google.gson.GsonBuilder;
import com.google.gson.reflect.TypeToken;
......@@ -24,6 +26,8 @@ import jadx.gui.device.debugger.smali.Smali;
import jadx.gui.treemodel.JClass;
public class BreakpointManager {
private static final Logger LOG = LoggerFactory.getLogger(BreakpointManager.class);
private static Gson gson = null;
private static final Type TYPE_TOKEN = new TypeToken<Map<String, List<FileBreakpoint>>>() {
}.getType();
......@@ -56,8 +60,8 @@ public class BreakpointManager {
try {
byte[] bytes = Files.readAllBytes(savePath);
bpm = gson.fromJson(new String(bytes, StandardCharsets.UTF_8), TYPE_TOKEN);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to read breakpoints config: {}", savePath, e);
}
}
if (bpm == null) {
......@@ -147,8 +151,8 @@ public class BreakpointManager {
private static void sync() {
try {
Files.write(savePath, gson.toJson(bpm).getBytes(StandardCharsets.UTF_8));
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to write breakpoints config: {}", savePath, e);
}
}
......
......@@ -6,6 +6,8 @@ import java.util.Map;
import java.util.Map.Entry;
import org.jetbrains.annotations.Nullable;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jadx.api.JavaClass;
import jadx.api.ResourceFile;
......@@ -18,6 +20,7 @@ import jadx.gui.treemodel.JNode;
import jadx.gui.ui.MainWindow;
public class DbgUtils {
private static final Logger LOG = LoggerFactory.getLogger(DbgUtils.class);
private static Map<ClassInfo, Smali> smaliCache = Collections.emptyMap();
......@@ -156,7 +159,7 @@ public class DbgUtils {
return androidManifest.loadContent().getText().getCodeStr();
}
} catch (Exception e) {
e.printStackTrace();
LOG.error("AndroidManifest.xml search error", e);
}
return "";
}
......
......@@ -13,6 +13,9 @@ import java.util.concurrent.Executors;
import javax.swing.tree.DefaultMutableTreeNode;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.reactivex.annotations.NonNull;
import io.reactivex.annotations.Nullable;
......@@ -42,6 +45,8 @@ import jadx.gui.ui.panel.JDebuggerPanel.ValueTreeNode;
import static jadx.gui.device.debugger.SmaliDebugger.RuntimeType;
public final class DebugController implements SmaliDebugger.SuspendListener, IDebugController {
private static final Logger LOG = LoggerFactory.getLogger(DebugController.class);
private static final String ONCREATE_SIGNATURE = "onCreate(Landroid/os/Bundle;)V";
private static final Map<String, RuntimeType> TYPE_MAP = new HashMap<>();
private static final RuntimeType[] POSSIBLE_TYPES = { RuntimeType.OBJECT, RuntimeType.INT, RuntimeType.LONG };
......@@ -924,16 +929,17 @@ public final class DebugController implements SmaliDebugger.SuspendListener, IDe
private void logErr(Exception e, String extra) {
debuggerPanel.log(e.getMessage());
debuggerPanel.log(extra);
e.printStackTrace();
LOG.error(extra, e);
}
private void logErr(Exception e) {
debuggerPanel.log(e.getMessage());
e.printStackTrace();
LOG.error("Debug error", e);
}
private void logErr(String e) {
debuggerPanel.log(e);
LOG.error("Debug error: {}", e);
}
private void scrollToPos(long codeOffset) {
......
......@@ -17,6 +17,9 @@ import java.util.concurrent.Executors;
import java.util.concurrent.SynchronousQueue;
import java.util.concurrent.atomic.AtomicInteger;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.github.hqktech.JDWP;
import io.github.hqktech.JDWP.ArrayReference.Length.LengthReplyData;
import io.github.hqktech.JDWP.ByteBuffer;
......@@ -78,6 +81,7 @@ import jadx.gui.utils.ObjectPool;
public class SmaliDebugger {
private static final Logger LOG = LoggerFactory.getLogger(SmaliDebugger.class);
private final JDWP jdwp;
private int localTcpPort;
private InputStream inputStream;
......@@ -375,7 +379,7 @@ public class SmaliDebugger {
try {
resume();
} catch (SmaliDebuggerException e) {
e.printStackTrace();
LOG.error("Resume failed", e);
}
}
});
......@@ -410,13 +414,13 @@ public class SmaliDebugger {
eventListenerMap.remove(reqID);
}
} catch (SmaliDebuggerException e) {
e.printStackTrace();
LOG.error("Method entry failed", e);
} finally {
if (!removeListener) {
try {
resume();
} catch (SmaliDebuggerException e) {
e.printStackTrace();
LOG.error("Resume failed", e);
}
}
}
......@@ -690,7 +694,7 @@ public class SmaliDebugger {
printUnexpectedID(res.getID());
}
} catch (SmaliDebuggerException e) {
e.printStackTrace();
LOG.error("Error in debugger decoding loop", e);
if (!errFromCallback) { // fatal error
break;
}
......@@ -721,8 +725,8 @@ public class SmaliDebugger {
sendCommand(buf, res -> {
try {
store.put(res);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Command send failed", e);
}
});
Integer id = syncQueueID.getAndAdd(1);
......@@ -757,11 +761,7 @@ public class SmaliDebugger {
for (JDWP.EventRequestDecoder event : data.events) {
EventListenerAdapter listener = eventListenerMap.get(event.getRequestID());
if (listener == null) {
try {
printUnexpectedID(event.getRequestID());
} catch (Exception e) {
e.printStackTrace();
}
LOG.error("Missing handler for id: {}", event.getRequestID());
continue;
}
if (event instanceof VMStartEvent) {
......
......@@ -14,11 +14,16 @@ import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.TimeUnit;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import io.reactivex.annotations.NonNull;
import jadx.core.utils.StringUtils;
public class ADB {
private static final Logger LOG = LoggerFactory.getLogger(ADB.class);
private static final int DEFAULT_PORT = 5037;
private static final String DEFAULT_ADDR = "localhost";
......@@ -138,8 +143,8 @@ public class ADB {
try {
proc.waitFor(3, TimeUnit.SECONDS); // for listening to a port, 3 sec should be more than enough.
proc.exitValue();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Start server error", e);
proc.destroyForcibly();
return false;
}
......@@ -155,10 +160,9 @@ public class ADB {
Socket sock = new Socket(host, port);
sock.close();
return true;
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
return false;
}
return false;
}
/**
......@@ -404,8 +408,8 @@ public class ADB {
if (list.size() != 0) {
androidReleaseVer = list.get(0);
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to get android release version", e);
androidReleaseVer = "";
}
return androidReleaseVer;
......@@ -510,8 +514,8 @@ public class ADB {
if (jdwpListenerSock != null) {
try {
jdwpListenerSock.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("JDWP socket close failed", e);
}
}
this.jdwpListenerSock = null;
......
......@@ -195,7 +195,7 @@ public class TabbedPane extends JTabbedPane {
jumpPos.setPos(offs);
codeArea.scrollToPos(offs);
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to jump to position: {}", pos, e);
codeArea.scrollToLine(line);
}
}
......
......@@ -142,6 +142,7 @@ public abstract class AbstractCodeArea extends RSyntaxTextArea {
return lastText;
}
@Nullable
public String getWordUnderCaret() {
return getWordByPosition(getCaretPosition());
}
......@@ -156,7 +157,7 @@ public abstract class AbstractCodeArea extends RSyntaxTextArea {
}
start++;
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to find word start", e);
start = -1;
}
return start;
......@@ -171,29 +172,26 @@ public abstract class AbstractCodeArea extends RSyntaxTextArea {
} while (end < max && !StringUtils.isWordSeparator(getText(end, 1).charAt(0)));
}
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to find word end", e);
end = max;
}
return end;
}
@Nullable
public String getWordByPosition(int pos) {
String text;
int len = getDocument().getLength();
int start = getWordStart(pos);
int end = getWordEnd(pos, len);
try {
if (end > start) {
text = getText(start, end - start);
} else {
text = null;
if (end <= start) {
return null;
}
return getText(start, end - start);
} catch (BadLocationException e) {
e.printStackTrace();
System.out.printf("start: %d end: %d%n", start, end);
text = null;
LOG.error("Failed to get word at pos: {}, start: {}, end: {}", pos, start, end, e);
return null;
}
return text;
}
/**
......
......@@ -32,6 +32,8 @@ import org.fife.ui.rtextarea.GutterIconInfo;
import org.fife.ui.rtextarea.IconRowHeader;
import org.fife.ui.rtextarea.RTextArea;
import org.fife.ui.rtextarea.RTextAreaUI;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jadx.gui.device.debugger.BreakpointManager;
import jadx.gui.device.debugger.DbgUtils;
......@@ -44,6 +46,8 @@ import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
public final class SmaliArea extends AbstractCodeArea {
private static final Logger LOG = LoggerFactory.getLogger(SmaliArea.class);
private static final long serialVersionUID = 1334485631870306494L;
private static final Icon ICON_BREAKPOINT = UiUtils.openSvgIcon("debugger/db_set_breakpoint");
......@@ -260,8 +264,8 @@ public final class SmaliArea extends AbstractCodeArea {
int line;
try {
line = getLineOfOffset(pos);
} catch (BadLocationException badLocationException) {
badLocationException.printStackTrace();
} catch (BadLocationException e) {
LOG.error("Failed to get line by offset: {}", pos, e);
return;
}
BreakpointLine bpLine = bpMap.remove(line);
......@@ -287,7 +291,7 @@ public final class SmaliArea extends AbstractCodeArea {
int line = getLineOfOffset(pos);
runningHighlightTag = addLineHighlight(line, DEBUG_LINE_COLOR);
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to get line by offset: {}", pos, e);
}
}
......@@ -296,7 +300,7 @@ public final class SmaliArea extends AbstractCodeArea {
int line = getLineOfOffset(pos);
bpMap.computeIfAbsent(line, k -> new BreakpointLine(line)).setDisabled(true);
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to get line by offset: {}", pos, e);
}
}
......@@ -377,7 +381,7 @@ public final class SmaliArea extends AbstractCodeArea {
try {
iconInfo = gutter.addLineTrackingIcon(line, ICON_BREAKPOINT_DISABLED);
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to add line tracking icon", e);
}
}
} else {
......@@ -387,7 +391,7 @@ public final class SmaliArea extends AbstractCodeArea {
iconInfo = gutter.addLineTrackingIcon(line, ICON_BREAKPOINT);
highlightTag = addLineHighlight(line, BREAKPOINT_LINE_COLOR);
} catch (BadLocationException e) {
e.printStackTrace();
LOG.error("Failed to remove line tracking icon", e);
}
}
}
......
......@@ -10,7 +10,6 @@ import java.awt.Label;
import java.awt.event.MouseAdapter;
import java.awt.event.MouseEvent;
import java.io.File;
import java.io.IOException;
import java.net.Socket;
import java.util.ArrayList;
import java.util.Collections;
......@@ -36,6 +35,9 @@ import javax.swing.tree.DefaultTreeModel;
import javax.swing.tree.TreePath;
import javax.swing.tree.TreeSelectionModel;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jadx.core.utils.StringUtils;
import jadx.core.utils.exceptions.JadxRuntimeException;
import jadx.gui.device.debugger.DbgUtils;
......@@ -44,11 +46,14 @@ import jadx.gui.treemodel.JClass;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.panel.IDebugController;
import jadx.gui.utils.NLS;
import jadx.gui.utils.SystemInfo;
import jadx.gui.utils.UiUtils;
import static jadx.gui.device.protocol.ADB.Device.ForwardResult;
public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.JDWPProcessListener {
private static final Logger LOG = LoggerFactory.getLogger(ADBDialog.class);
private static final long serialVersionUID = -1111111202102181630L;
private static final ImageIcon ICON_DEVICE = UiUtils.openSvgIcon("adb/androidDevice");
private static final ImageIcon ICON_PROCESS = UiUtils.openSvgIcon("adb/addToWatch");
......@@ -185,8 +190,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
if (deviceSocket != null) {
try {
deviceSocket.close();
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to close device socket", e);
}
deviceSocket = null;
}
......@@ -197,13 +202,7 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
}
private void detectADBPath() {
boolean isWinOS;
try {
isWinOS = System.getProperty("os.name").startsWith("Windows");
} catch (Exception e) {
e.printStackTrace();
return;
}
boolean isWinOS = SystemInfo.IS_WINDOWS;
String slash = isWinOS ? "\\" : "/";
String adbName = isWinOS ? "adb.exe" : "adb";
String sdkPath = System.getenv("ANDROID_HOME");
......@@ -244,9 +243,9 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
} else {
tip = NLS.str("adb_dialog.start_fail", portTextField.getText());
}
} catch (Exception except) {
tip = except.getMessage();
except.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to start adb server", e);
tip = e.getMessage();
}
UiUtils.showMessageBox(mainWindow, tip);
tipLabel.setText(tip);
......@@ -265,8 +264,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
} else {
tip = NLS.str("adb_dialog.connect_fail");
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to connect to adb", e);
tip = e.getMessage();
UiUtils.showMessageBox(mainWindow, tip);
}
......@@ -346,26 +345,25 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
}
private static boolean attachProcess(MainWindow mainWindow) {
boolean ok = false;
if (debugSetter == null) {
return ok;
return false;
}
debugSetter.clearForward();
String rst = debugSetter.forwardJDWP();
if (!rst.isEmpty()) {
UiUtils.showMessageBox(mainWindow, rst);
return ok;
return false;
}
try {
ok = mainWindow.getDebuggerPanel().showDebugger(
return mainWindow.getDebuggerPanel().showDebugger(
debugSetter.name,
debugSetter.device.getDeviceInfo().adbHost,
debugSetter.forwardTcpPort,
debugSetter.ver);
} catch (Exception except) {
except.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to attach to process", e);
return false;
}
return ok;
}
public static boolean launchForDebugging(MainWindow mainWindow, String fullAppPath, boolean autoAttach) {
......@@ -379,7 +377,7 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
return attachProcess(mainWindow);
}
} catch (Exception e) {
e.printStackTrace();
LOG.error("Failed to launch app", e);
}
}
return false;
......@@ -416,8 +414,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
private void listenJDWP(ADB.Device device) {
try {
device.listenForJDWP(this);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed listen for JDWP", e);
}
}
......@@ -451,8 +449,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
* otherwise we may not get its real name but the <pre-initialized> state text.
*/
procs = device.getProcessList();
} catch (IOException | InterruptedException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("Failed to get device process list", e);
procs = Collections.emptyList();
}
List<String> procList = new ArrayList<>(id.size());
......@@ -470,7 +468,7 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
try {
node = getDeviceNode(device);
} catch (Exception e) {
e.printStackTrace();
LOG.error("Failed to find device", e);
return;
}
node.tNode.removeAllChildren();
......@@ -521,7 +519,7 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
try {
device.launchApp(fullName);
} catch (Exception e) {
e.printStackTrace();
LOG.error("Failed to launch app: {}", fullName, e);
UiUtils.showMessageBox(mainWindow, e.getMessage());
}
}
......@@ -652,8 +650,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
resultDesc = rst.desc;
break;
} while (true);
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("JDWP forward error", e);
}
if (StringUtils.isEmpty(resultDesc)) {
resultDesc = NLS.str("adb_dialog.forward_fail");
......@@ -676,14 +674,14 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
try {
device.removeForward(field.substring("tcp:".length()));
} catch (Exception e) {
e.printStackTrace();
LOG.error("JDWP remove forward error", e);
}
}
}
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("JDWP clear forward error", e);
}
}
......@@ -698,8 +696,8 @@ public class ADBDialog extends JDialog implements ADB.DeviceStateListener, ADB.J
return !s.contains(tcpPort);
}
}
} catch (IOException e) {
e.printStackTrace();
} catch (Exception e) {
LOG.error("ADB list forward error", e);
}
return false;
}
......
......@@ -10,6 +10,9 @@ import javax.swing.AbstractAction;
import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import jadx.core.dex.instructions.args.ArgType;
import jadx.gui.ui.MainWindow;
import jadx.gui.ui.dialog.SetValueDialog;
......@@ -18,6 +21,8 @@ import jadx.gui.utils.NLS;
import jadx.gui.utils.UiUtils;
public class VarTreePopupMenu extends JPopupMenu {
private static final Logger LOG = LoggerFactory.getLogger(VarTreePopupMenu.class);
private static final long serialVersionUID = -1111111202103170724L;
private final MainWindow mainWindow;
......@@ -63,14 +68,14 @@ public class VarTreePopupMenu extends JPopupMenu {
private static final long serialVersionUID = -1111111202103171120L;
@Override
public void actionPerformed(ActionEvent e) {
public void actionPerformed(ActionEvent event) {
try {
mainWindow.getDebuggerPanel()
.getDbgController()
.modifyRegValue(valNode, ArgType.INT, 0);
} catch (Exception except) {
except.printStackTrace();
UiUtils.showMessageBox(mainWindow, except.getMessage());
} catch (Exception e) {
LOG.error("Change to zero failed", e);
UiUtils.showMessageBox(mainWindow, e.getMessage());
}
}
});
......@@ -78,14 +83,14 @@ public class VarTreePopupMenu extends JPopupMenu {
private static final long serialVersionUID = -1111111202103171121L;
@Override
public void actionPerformed(ActionEvent e) {
public void actionPerformed(ActionEvent event) {
try {
mainWindow.getDebuggerPanel()
.getDbgController()
.modifyRegValue(valNode, ArgType.INT, 1);
} catch (Exception except) {
except.printStackTrace();
UiUtils.showMessageBox(mainWindow, except.getMessage());
} catch (Exception e) {
LOG.error("Change to one failed", e);
UiUtils.showMessageBox(mainWindow, e.getMessage());
}
}
});
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册