More work with RR direct mode.

This commit is contained in:
Ernie Pasveer
2023-09-03 22:19:45 -05:00
parent ca5d230155
commit 4df5477b13
19 changed files with 464 additions and 195 deletions
+36 -17
View File
@@ -191,15 +191,19 @@ SeerMainWindow::SeerMainWindow(QWidget* parent) : QMainWindow(parent) {
handleRecordSettingsChanged();
//
// Initialize contents.
//
// Restore window settings.
readSettings();
// Restore configuration settings.
readConfigSettings();
//
// Initialize contents.
//
// Show the main window.
show();
handleShowMessage("Welcome to Seer. The All Knowing...", 3000);
}
@@ -324,12 +328,12 @@ const QString& SeerMainWindow::executableConnectHostPort () const {
return gdbWidget->executableConnectHostPort();
}
void SeerMainWindow::setExecutableRRHostPort (const QString& executableRRHostPort) {
gdbWidget->setExecutableRRHostPort(executableRRHostPort);
void SeerMainWindow::setExecutableRRTraceDirectory (const QString& executableRRTraceDirectory) {
gdbWidget->setExecutableRRTraceDirectory(executableRRTraceDirectory);
}
const QString& SeerMainWindow::executableRRHostPort () const {
return gdbWidget->executableRRHostPort();
const QString& SeerMainWindow::executableRRTraceDirectory () const {
return gdbWidget->executableRRTraceDirectory();
}
void SeerMainWindow::setExecutableCoreFilename (const QString& executableCoreFilename) {
@@ -402,8 +406,7 @@ void SeerMainWindow::launchExecutable (const QString& launchMode, const QString&
actionGdbRun->setVisible(false);
actionGdbStart->setVisible(false);
//gdbWidget->handleGdbRRExecutable();
gdbWidget->handleGdbDirectRRExecutable();
gdbWidget->handleGdbRRExecutable();
}else if (launchMode == "corefile") {
@@ -461,7 +464,7 @@ void SeerMainWindow::handleFileDebug () {
dlg.setNonStopMode(executableNonStopMode());
dlg.setAttachPid(executablePid());
dlg.setConnectHostPort(executableConnectHostPort());
dlg.setRRHostPort(executableRRHostPort());
dlg.setRRTraceDirectory(executableRRTraceDirectory());
dlg.setCoreFilename(executableCoreFilename());
dlg.setLaunchMode(executableLaunchMode());
dlg.setBreakpointMode(executableBreakMode());
@@ -495,7 +498,7 @@ void SeerMainWindow::handleFileDebug () {
setExecutableNonStopMode(dlg.nonStopMode());
setExecutablePid(dlg.attachPid());
setExecutableConnectHostPort(dlg.connectHostPort());
setExecutableRRHostPort(dlg.rrHostPort());
setExecutableRRTraceDirectory(dlg.rrTraceDirectory());
setExecutableCoreFilename(dlg.coreFilename());
setExecutablePreGdbCommands(dlg.preGdbCommands());
setExecutablePostGdbCommands(dlg.postGdbCommands());
@@ -600,6 +603,9 @@ void SeerMainWindow::handleSettingsConfiguration () {
SeerConfigDialog dlg(this);
dlg.setSeerConsoleMode(gdbWidget->consoleMode());
dlg.setSeerConsoleScrollLines(gdbWidget->consoleScrollLines());
dlg.setSeerRememberManualCommandCount(gdbWidget->rememberManualCommandCount());
dlg.setGdbProgram(gdbWidget->gdbProgram());
dlg.setGdbArguments(gdbWidget->gdbArguments());
dlg.setGdbAsyncMode(gdbWidget->gdbAsyncMode());
@@ -629,9 +635,6 @@ void SeerMainWindow::handleSettingsConfiguration () {
dlg.setAssemblyShowSourceLines(gdbWidget->assemblyShowSourceLines());
dlg.setAssemblyRegisterFormat(gdbWidget->assemblyRegisterFormat());
dlg.setAssemblyDisassemblyMode(gdbWidget->assemblyDisassemblyMode(), gdbWidget->assemblyDisassemblyBytes());
dlg.setSeerConsoleMode(gdbWidget->consoleMode());
dlg.setSeerConsoleScrollLines(gdbWidget->consoleScrollLines());
dlg.setSeerRememberManualCommandCount(gdbWidget->rememberManualCommandCount());
dlg.setKeySettings(keySettings());
int ret = dlg.exec();
@@ -641,6 +644,9 @@ void SeerMainWindow::handleSettingsConfiguration () {
}
// Update the GdbWidget with the new settings.
gdbWidget->setConsoleMode(dlg.seerConsoleMode());
gdbWidget->setConsoleScrollLines(dlg.seerConsoleScrollLines());
gdbWidget->setRememberManualCommandCount(dlg.seerRememberManualCommandCount());
gdbWidget->setGdbProgram(dlg.gdbProgram());
gdbWidget->setGdbArguments(dlg.gdbArguments());
gdbWidget->setGdbAsyncMode(dlg.gdbAsyncMode());
@@ -669,9 +675,9 @@ void SeerMainWindow::handleSettingsConfiguration () {
gdbWidget->setAssemblyShowSourceLines(dlg.assemblyShowSourceLines());
gdbWidget->setAssemblyRegisterFormat(dlg.assemblyRegisterFormat());
gdbWidget->setAssemblyDisassemblyMode(dlg.assemblyDisassemblyMode(), dlg.assemblyDisassemblyBytes());
gdbWidget->setConsoleMode(dlg.seerConsoleMode());
gdbWidget->setConsoleScrollLines(dlg.seerConsoleScrollLines());
gdbWidget->setRememberManualCommandCount(dlg.seerRememberManualCommandCount());
gdbWidget->setRRProgram(dlg.rrProgram());
gdbWidget->setRRArguments(dlg.rrArguments());
gdbWidget->setRRGdbArguments(dlg.rrGdbArguments());
// Clear history, if we need to.
bool clearManualCommandHistory = dlg.seerClearManualCommandHistory();
@@ -711,6 +717,7 @@ void SeerMainWindow::handleHelpAbout () {
}
void SeerMainWindow::handleRunExecutable () {
gdbWidget->handleGdbRunExecutable("none");
}
@@ -1178,6 +1185,12 @@ void SeerMainWindow::writeConfigSettings () {
settings.setValue("enableprettyprinting", gdbWidget->gdbEnablePrettyPrinting());
} settings.endGroup();
settings.beginGroup("rr"); {
settings.setValue("program", gdbWidget->rrProgram());
settings.setValue("arguments", gdbWidget->rrArguments());
settings.setValue("gdbarguments", gdbWidget->rrGdbArguments());
} settings.endGroup();
settings.beginGroup("printpoints"); {
settings.setValue("style", gdbWidget->dprintfStyle());
settings.setValue("function", gdbWidget->dprintfFunction());
@@ -1253,6 +1266,12 @@ void SeerMainWindow::readConfigSettings () {
gdbWidget->setGdbEnablePrettyPrinting(settings.value("enableprettyprinting", true).toBool());
} settings.endGroup();
settings.beginGroup("rr"); {
gdbWidget->setRRProgram(settings.value("program", "/usr/bin/rr").toString());
gdbWidget->setRRArguments(settings.value("arguments", "replay --interpreter=mi").toString());
gdbWidget->setRRArguments(settings.value("gdbarguments", "").toString());
} settings.endGroup();
settings.beginGroup("printpoints"); {
gdbWidget->setDprintfStyle(settings.value("style", "gdb").toString());
gdbWidget->setDprintfFunction(settings.value("function", "printf").toString());