mirror of
https://github.com/rizinorg/cutter.git
synced 2024-12-25 22:35:26 +00:00
Fix attaching debugger (#3139)
* Fix attaching debugger * Fix deadlock on attach Co-authored-by: wargio <wargio@libero.it>
This commit is contained in:
parent
ef0d69b53a
commit
c0f260ca69
@ -2075,16 +2075,23 @@ void CutterCore::attachDebug(int pid)
|
||||
offsetPriorDebugging = getOffset();
|
||||
}
|
||||
|
||||
CORE_LOCK();
|
||||
setConfig("cfg.debug", true);
|
||||
auto uri = rz_str_newf("dbg://%d", pid);
|
||||
if (currentlyOpenFile.isEmpty()) {
|
||||
rz_core_file_open_load(core, uri, 0, RZ_PERM_R, false);
|
||||
} else {
|
||||
rz_core_file_reopen_remote_debug(core, uri, 0);
|
||||
if (!asyncTask(
|
||||
[&](RzCore *core) {
|
||||
// cannot use setConfig because core is
|
||||
// already locked, which causes a deadlock
|
||||
rz_config_set_b(core->config, "cfg.debug", true);
|
||||
auto uri = rz_str_newf("dbg://%d", pid);
|
||||
if (currentlyOpenFile.isEmpty()) {
|
||||
rz_core_file_open_load(core, uri, 0, RZ_PERM_R, false);
|
||||
} else {
|
||||
rz_core_file_reopen_remote_debug(core, uri, 0);
|
||||
}
|
||||
free(uri);
|
||||
return nullptr;
|
||||
},
|
||||
debugTask)) {
|
||||
return;
|
||||
}
|
||||
free(uri);
|
||||
|
||||
emit debugTaskStateChanged();
|
||||
|
||||
connect(debugTask.data(), &RizinTask::finished, this, [this, pid]() {
|
||||
@ -2144,7 +2151,10 @@ void CutterCore::stopDebug()
|
||||
rz_core_analysis_esil_trace_stop(core);
|
||||
currentlyEmulating = false;
|
||||
} else {
|
||||
rz_core_debug_process_close(core);
|
||||
// ensure we have opened a file.
|
||||
if (core->io->desc) {
|
||||
rz_core_debug_process_close(core);
|
||||
}
|
||||
currentlyAttachedToPID = -1;
|
||||
}
|
||||
|
||||
@ -4579,4 +4589,4 @@ void CutterCore::writeGraphvizGraphToFile(QString path, QString format, RzCoreGr
|
||||
qWarning() << "Cannot get graph at " << RzAddressString(address);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user