From be0f4ffbe591072b17d4928496d389e5b125f5aa Mon Sep 17 00:00:00 2001 From: Karliss Date: Wed, 22 Jan 2025 16:11:11 +0200 Subject: [PATCH 1/2] Debug shortcut polish * Avoid F5(continue debug) shortctut conflicting with refresh all by switching QKeySequence:Refresh to Ctrl+R. * Confirm debug arg dialog using Ctrl+Return * Add Stop debug action to debug menu in main menu bar --- src/core/MainWindow.cpp | 4 ++-- src/dialogs/NativeDebugDialog.cpp | 4 ++++ 2 files changed, 6 insertions(+), 2 deletions(-) diff --git a/src/core/MainWindow.cpp b/src/core/MainWindow.cpp index 095ca06e5..213fa39b4 100644 --- a/src/core/MainWindow.cpp +++ b/src/core/MainWindow.cpp @@ -192,8 +192,7 @@ void MainWindow::initUI() connect(seek_to_func_start_shortcut, &QShortcut::activated, this, &MainWindow::seekToFunctionStart); - QShortcut *refresh_shortcut = new QShortcut(QKeySequence(QKeySequence::Refresh), this); - connect(refresh_shortcut, &QShortcut::activated, this, &MainWindow::refreshAll); + ui->actionRefresh_contents->setShortcut(QKeySequence(Qt::CTRL | Qt::Key_R)); connect(ui->actionZoomIn, &QAction::triggered, this, &MainWindow::onZoomIn); connect(ui->actionZoomOut, &QAction::triggered, this, &MainWindow::onZoomOut); @@ -298,6 +297,7 @@ void MainWindow::initToolBar() ui->menuDebug->addAction(debugActions->actionStartEmul); ui->menuDebug->addAction(debugActions->actionAttach); ui->menuDebug->addAction(debugActions->actionStartRemote); + ui->menuDebug->addAction(debugActions->actionStop); ui->menuDebug->addSeparator(); ui->menuDebug->addAction(debugActions->actionStep); ui->menuDebug->addAction(debugActions->actionStepOver); diff --git a/src/dialogs/NativeDebugDialog.cpp b/src/dialogs/NativeDebugDialog.cpp index 3d81f04cd..0549e2d41 100644 --- a/src/dialogs/NativeDebugDialog.cpp +++ b/src/dialogs/NativeDebugDialog.cpp @@ -2,12 +2,16 @@ #include "ui_NativeDebugDialog.h" #include +#include NativeDebugDialog::NativeDebugDialog(QWidget *parent) : QDialog(parent), ui(new Ui::NativeDebugDialog) { ui->setupUi(this); setWindowFlags(windowFlags() & (~Qt::WindowContextHelpButtonHint)); + auto shortcut = new QShortcut(QKeySequence(Qt::CTRL | Qt::Key_Return), ui->argEdit, nullptr, + nullptr, Qt::ShortcutContext::WidgetShortcut); + connect(shortcut, &QShortcut::activated, this, &QDialog::accept); } NativeDebugDialog::~NativeDebugDialog() {} From 9d89933bb48e834c35fecaf1a4f2a7a1215830d4 Mon Sep 17 00:00:00 2001 From: Karliss Date: Thu, 30 Jan 2025 15:05:13 +0200 Subject: [PATCH 2/2] Fix debug step over and out. The old code didn't make sense: capturing by reference function local variable in a lambda which will be executed as async task, checking result of async task before the task was even started. --- src/core/Cutter.cpp | 24 ++++++------------------ 1 file changed, 6 insertions(+), 18 deletions(-) diff --git a/src/core/Cutter.cpp b/src/core/Cutter.cpp index 2e5d953eb..eb161d641 100644 --- a/src/core/Cutter.cpp +++ b/src/core/Cutter.cpp @@ -2422,17 +2422,13 @@ void CutterCore::stepOverDebug() return; } } else { - bool ret; asyncTask( - [&](RzCore *core) { - ret = rz_core_debug_step_over(core, 1); + [](RzCore *core) { + rz_core_debug_step_over(core, 1); rz_core_dbg_follow_seek_register(core); return nullptr; }, debugTask); - if (!ret) { - return; - } } emit debugTaskStateChanged(); @@ -2453,17 +2449,13 @@ void CutterCore::stepOutDebug() } emit debugTaskStateChanged(); - bool ret; asyncTask( - [&](RzCore *core) { - ret = rz_core_debug_step_until_frame(core); + [](RzCore *core) { + rz_core_debug_step_until_frame(core); rz_core_dbg_follow_seek_register(core); return nullptr; }, debugTask); - if (!ret) { - return; - } connect(debugTask.data(), &RizinTask::finished, this, [this]() { debugTask.clear(); @@ -2492,17 +2484,13 @@ void CutterCore::stepBackDebug() return; } } else { - bool ret; asyncTask( - [&](RzCore *core) { - ret = rz_core_debug_step_back(core, 1); + [](RzCore *core) { + rz_core_debug_step_back(core, 1); rz_core_dbg_follow_seek_register(core); return nullptr; }, debugTask); - if (!ret) { - return; - } } emit debugTaskStateChanged();