work save
This commit is contained in:
parent
6ba9cbb78b
commit
b359004f95
|
@ -275,7 +275,7 @@ void Debugger::refreshAll()
|
|||
if (memoryModel()->startAddress()>0
|
||||
&& mClient)
|
||||
mClient->readMemory(
|
||||
memoryModel()->startAddress(),
|
||||
QString("%1").arg(memoryModel()->startAddress()),
|
||||
pSettings->debugger().memoryViewRows(),
|
||||
pSettings->debugger().memoryViewColumns()
|
||||
);
|
||||
|
@ -309,9 +309,50 @@ bool Debugger::inferiorRunning()
|
|||
|
||||
void Debugger::interrupt()
|
||||
{
|
||||
if (mClient) {
|
||||
if (mClient)
|
||||
mClient->interrupt();
|
||||
}
|
||||
|
||||
void Debugger::stepOver()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->stepOver();
|
||||
}
|
||||
|
||||
void Debugger::stepInto()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->stepInto();
|
||||
}
|
||||
|
||||
void Debugger::stepOut()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->stepOut();
|
||||
}
|
||||
|
||||
void Debugger::runTo(const QString &filename, int line)
|
||||
{
|
||||
if (mClient)
|
||||
mClient->runTo(filename, line);
|
||||
}
|
||||
|
||||
void Debugger::resume()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->resume();
|
||||
}
|
||||
|
||||
void Debugger::stepOverInstruction()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->stepOverInstruction();
|
||||
}
|
||||
|
||||
void Debugger::stepIntoInstruction()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->stepIntoInstruction();
|
||||
}
|
||||
|
||||
bool Debugger::isForProject() const
|
||||
|
@ -639,12 +680,43 @@ PWatchVar Debugger::watchVarAt(const QModelIndex &index)
|
|||
return mWatchModel->findWatchVar(index);
|
||||
}
|
||||
|
||||
void Debugger::readMemory(const QString &startAddress, int rows, int cols)
|
||||
{
|
||||
if (mClient)
|
||||
mClient->readMemory(startAddress, rows, cols);
|
||||
}
|
||||
|
||||
void Debugger::evalExpression(const QString &expression)
|
||||
{
|
||||
if (mClient)
|
||||
mClient->evalExpression(expression);
|
||||
}
|
||||
|
||||
void Debugger::refreshFrame()
|
||||
{
|
||||
if (mClient) {
|
||||
mClient->refreshFrame();
|
||||
}
|
||||
}
|
||||
|
||||
void Debugger::refreshRegisters()
|
||||
{
|
||||
if (mClient)
|
||||
mClient->refreshRegisters();
|
||||
}
|
||||
|
||||
void Debugger::disassembleCurrentFrame(bool blendMode)
|
||||
{
|
||||
if (mClient)
|
||||
mClient->disassembleCurrentFrame(blendMode);
|
||||
}
|
||||
|
||||
void Debugger::setDisassemblyLanguage(bool isIntel)
|
||||
{
|
||||
if (mClient)
|
||||
mClient->setDisassemblyLanguage(isIntel);
|
||||
}
|
||||
|
||||
//void Debugger::notifyWatchVarUpdated(PWatchVar var)
|
||||
//{
|
||||
// mWatchModel->notifyUpdated(var);
|
||||
|
|
|
@ -306,6 +306,13 @@ public:
|
|||
bool commandRunning();
|
||||
bool inferiorRunning();
|
||||
void interrupt();
|
||||
void stepOver();
|
||||
void stepInto();
|
||||
void stepOut();
|
||||
void runTo(const QString& filename, int line);
|
||||
void resume();
|
||||
void stepOverInstruction();
|
||||
void stepIntoInstruction();
|
||||
|
||||
bool isForProject() const;
|
||||
void setIsForProject(bool newIsForProject);
|
||||
|
@ -344,9 +351,12 @@ public:
|
|||
PWatchVar watchVarAt(const QModelIndex& index);
|
||||
void refreshVars();
|
||||
|
||||
void readMemory(const QString& startAddress, int rows, int cols);
|
||||
void evalExpression(const QString& expression);
|
||||
|
||||
|
||||
void refreshFrame();
|
||||
void refreshRegisters();
|
||||
void disassembleCurrentFrame(bool blendMode);
|
||||
void setDisassemblyLanguage(bool isIntel);
|
||||
// void notifyWatchVarUpdated(PWatchVar var);
|
||||
|
||||
std::shared_ptr<BacktraceModel> backtraceModel();
|
||||
|
@ -381,7 +391,6 @@ signals:
|
|||
public slots:
|
||||
void stop();
|
||||
void refreshAll();
|
||||
|
||||
private:
|
||||
void sendWatchCommand(PWatchVar var);
|
||||
void sendRemoveWatchCommand(PWatchVar var);
|
||||
|
@ -498,10 +507,18 @@ public:
|
|||
virtual DebuggerType clientType() = 0;
|
||||
|
||||
//requests
|
||||
virtual void stepOver() = 0;
|
||||
virtual void stepInto() = 0;
|
||||
virtual void stepOut() = 0;
|
||||
virtual void runTo(const QString& filename, int line) = 0;
|
||||
virtual void resume() = 0;
|
||||
virtual void stepOverInstruction() = 0;
|
||||
virtual void stepIntoInstruction() = 0;
|
||||
virtual void interrupt() = 0;
|
||||
|
||||
virtual void refreshStackVariables() = 0;
|
||||
|
||||
virtual void readMemory(qulonglong startAddress, int rows, int cols) = 0;
|
||||
virtual void readMemory(const QString& startAddress, int rows, int cols) = 0;
|
||||
virtual void writeMemory(qulonglong address, unsigned char data) = 0;
|
||||
|
||||
virtual void addBreakpoint(PBreakpoint breakpoint) = 0;
|
||||
|
@ -521,7 +538,7 @@ public:
|
|||
virtual void refreshFrame() = 0;
|
||||
virtual void refreshRegisters() = 0;
|
||||
virtual void disassembleCurrentFrame(bool blendMode) = 0;
|
||||
|
||||
virtual void setDisassemblyLanguage(bool isIntel) = 0;
|
||||
|
||||
signals:
|
||||
void parseStarted();
|
||||
|
|
|
@ -874,6 +874,43 @@ const PDebugCommand &GDBMIDebuggerClient::currentCmd() const
|
|||
return mCurrentCmd;
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::stepOver()
|
||||
{
|
||||
postCommand("-exec-next", "");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::stepInto()
|
||||
{
|
||||
postCommand("-exec-step", "");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::stepOut()
|
||||
{
|
||||
postCommand("-exec-finish", "");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::runTo(const QString &filename, int line)
|
||||
{
|
||||
postCommand("-exec-until", QString("\"%1\":%2")
|
||||
.arg(filename)
|
||||
.arg(line));
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::resume()
|
||||
{
|
||||
postCommand("-exec-continue", "");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::stepOverInstruction()
|
||||
{
|
||||
postCommand("-exec-next-instruction","");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::stepIntoInstruction()
|
||||
{
|
||||
postCommand("-exec-step-instruction","");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::interrupt()
|
||||
{
|
||||
postCommand("-exec-interrupt", "");
|
||||
|
@ -884,7 +921,7 @@ void GDBMIDebuggerClient::refreshStackVariables()
|
|||
postCommand("-stack-list-variables", "--all-values");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::readMemory(qulonglong startAddress, int rows, int cols)
|
||||
void GDBMIDebuggerClient::readMemory(const QString& startAddress, int rows, int cols)
|
||||
{
|
||||
postCommand("-data-read-memory",QString("%1 x 1 %2 %3 ")
|
||||
.arg(startAddress)
|
||||
|
@ -1000,12 +1037,21 @@ void GDBMIDebuggerClient::refreshRegisters()
|
|||
|
||||
void GDBMIDebuggerClient::disassembleCurrentFrame(bool blendMode)
|
||||
{
|
||||
if (blendMode)
|
||||
if (blendMode && clientType()==DebuggerType::GDB)
|
||||
postCommand("disas", "/s");
|
||||
else
|
||||
postCommand("disas", "");
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::setDisassemblyLanguage(bool isIntel)
|
||||
{
|
||||
if (isIntel) {
|
||||
postCommand("-gdb-set", "disassembly-flavor intel");
|
||||
} else {
|
||||
postCommand("-gdb-set", "disassembly-flavor att");
|
||||
}
|
||||
}
|
||||
|
||||
void GDBMIDebuggerClient::runInferiorStoppedHook()
|
||||
{
|
||||
QMutexLocker locker(&mCmdQueueMutex);
|
||||
|
|
|
@ -48,10 +48,18 @@ public:
|
|||
DebuggerType clientType() override;
|
||||
const PDebugCommand ¤tCmd() const;
|
||||
|
||||
void stepOver() override;
|
||||
void stepInto() override;
|
||||
void stepOut() override;
|
||||
void runTo(const QString& filename, int line) override;
|
||||
void resume() override;
|
||||
void stepOverInstruction() override;
|
||||
void stepIntoInstruction() override;
|
||||
void interrupt() override;
|
||||
|
||||
void refreshStackVariables() override;
|
||||
|
||||
void readMemory(qulonglong startAddress, int rows, int cols) override;
|
||||
void readMemory(const QString& startAddress, int rows, int cols) override;
|
||||
void writeMemory(qulonglong address, unsigned char data) override;
|
||||
|
||||
void addBreakpoint(PBreakpoint breakpoint) override;
|
||||
|
@ -68,9 +76,10 @@ public:
|
|||
|
||||
void evalExpression(const QString& expression) override;
|
||||
|
||||
void refreshFrame();
|
||||
void refreshRegisters();
|
||||
void disassembleCurrentFrame(bool blendMode);
|
||||
void refreshFrame() override;
|
||||
void refreshRegisters() override;
|
||||
void disassembleCurrentFrame(bool blendMode) override;
|
||||
void setDisassemblyLanguage(bool isIntel) override;
|
||||
// QThread interface
|
||||
protected:
|
||||
void run() override;
|
||||
|
|
|
@ -6416,7 +6416,7 @@ void MainWindow::on_actionStep_Over_triggered()
|
|||
{
|
||||
if (mDebugger->executing()) {
|
||||
//WatchView.Items.BeginUpdate();
|
||||
mDebugger->sendCommand("-exec-next", "");
|
||||
mDebugger->stepOver();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6424,7 +6424,7 @@ void MainWindow::on_actionStep_Into_triggered()
|
|||
{
|
||||
if (mDebugger->executing()) {
|
||||
//WatchView.Items.BeginUpdate();
|
||||
mDebugger->sendCommand("-exec-step", "");
|
||||
mDebugger->stepInto();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6433,7 +6433,7 @@ void MainWindow::on_actionStep_Out_triggered()
|
|||
{
|
||||
if (mDebugger->executing()) {
|
||||
//WatchView.Items.BeginUpdate();
|
||||
mDebugger->sendCommand("-exec-finish", "");
|
||||
mDebugger->stepOut();
|
||||
}
|
||||
|
||||
}
|
||||
|
@ -6444,9 +6444,7 @@ void MainWindow::on_actionRun_To_Cursor_triggered()
|
|||
Editor *e=mEditorList->getEditor();
|
||||
if (e!=nullptr) {
|
||||
//WatchView.Items.BeginUpdate();
|
||||
mDebugger->sendCommand("-exec-until", QString("\"%1\":%2")
|
||||
.arg(e->filename())
|
||||
.arg(e->caretY()));
|
||||
mDebugger->runTo(e->filename(), e->caretY());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6456,7 +6454,7 @@ void MainWindow::on_actionContinue_triggered()
|
|||
{
|
||||
if (mDebugger->executing()) {
|
||||
//WatchView.Items.BeginUpdate();
|
||||
mDebugger->sendCommand("-exec-continue", "");
|
||||
mDebugger->resume();
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -6512,10 +6510,9 @@ void MainWindow::onDebugMemoryAddressInput()
|
|||
if (!s.isEmpty()) {
|
||||
// connect(mDebugger, &Debugger::memoryExamineReady,
|
||||
// this, &MainWindow::onMemoryExamineReady);
|
||||
mDebugger->sendCommand("-data-read-memory",QString("%1 x 1 %2 %3 ")
|
||||
.arg(s)
|
||||
.arg(pSettings->debugger().memoryViewRows())
|
||||
.arg(pSettings->debugger().memoryViewColumns())
|
||||
mDebugger->readMemory(s,
|
||||
pSettings->debugger().memoryViewRows(),
|
||||
pSettings->debugger().memoryViewColumns()
|
||||
);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -85,14 +85,11 @@ CPUDialog::~CPUDialog()
|
|||
void CPUDialog::updateInfo()
|
||||
{
|
||||
if (pMainWindow->debugger()->executing()) {
|
||||
pMainWindow->debugger()->sendCommand("-stack-info-frame", "");
|
||||
pMainWindow->debugger()->refreshFrame();
|
||||
// Load the registers..
|
||||
sendSyntaxCommand();
|
||||
pMainWindow->debugger()->sendCommand("-data-list-register-values", "N");
|
||||
if (ui->chkBlendMode->isChecked())
|
||||
pMainWindow->debugger()->sendCommand("disas", "/s");
|
||||
else
|
||||
pMainWindow->debugger()->sendCommand("disas", "");
|
||||
pMainWindow->debugger()->refreshRegisters();
|
||||
pMainWindow->debugger()->disassembleCurrentFrame(ui->chkBlendMode->isChecked());
|
||||
}
|
||||
}
|
||||
|
||||
|
@ -157,12 +154,7 @@ void CPUDialog::resetEditorFont(float dpi)
|
|||
|
||||
void CPUDialog::sendSyntaxCommand()
|
||||
{
|
||||
// Set disassembly flavor
|
||||
if (ui->rdIntel->isChecked()) {
|
||||
pMainWindow->debugger()->sendCommand("-gdb-set", "disassembly-flavor intel");
|
||||
} else {
|
||||
pMainWindow->debugger()->sendCommand("-gdb-set", "disassembly-flavor att");
|
||||
}
|
||||
pMainWindow->debugger()->setDisassemblyLanguage(ui->rdIntel->isChecked());
|
||||
}
|
||||
|
||||
void CPUDialog::closeEvent(QCloseEvent *event)
|
||||
|
@ -200,13 +192,13 @@ void CPUDialog::on_chkBlendMode_stateChanged(int)
|
|||
|
||||
void CPUDialog::on_btnStepOverInstruction_clicked()
|
||||
{
|
||||
pMainWindow->debugger()->sendCommand("-exec-next-instruction","");
|
||||
pMainWindow->debugger()->stepOverInstruction();
|
||||
}
|
||||
|
||||
|
||||
void CPUDialog::on_btnStepIntoInstruction_clicked()
|
||||
{
|
||||
pMainWindow->debugger()->sendCommand("-exec-step-instruction","");
|
||||
pMainWindow->debugger()->stepIntoInstruction();
|
||||
}
|
||||
|
||||
void CPUDialog::onUpdateIcons()
|
||||
|
|
Loading…
Reference in New Issue