mirror of https://github.com/stella-emu/stella.git
Fixed bug in debugger 'run' and 'reload' commands; there's no longer a
segfault. Fixed segfault with debugger 'runto' command. git-svn-id: svn://svn.code.sf.net/p/stella/code/trunk@1346 8b62c5a3-ac7e-4cc8-8f21-d9a121418aba
This commit is contained in:
parent
d73b834a61
commit
aceb1d1513
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: DebuggerParser.cxx,v 1.98 2007-08-14 19:49:20 stephena Exp $
|
||||
// $Id: DebuggerParser.cxx,v 1.99 2007-08-14 20:36:18 stephena Exp $
|
||||
//============================================================================
|
||||
|
||||
#include <fstream>
|
||||
|
@ -111,7 +111,6 @@ string DebuggerParser::run(const string& command)
|
|||
if(commands[i].refreshRequired)
|
||||
debugger->myBaseDialog->loadConfig();
|
||||
|
||||
cerr << " ==> commandResult = " << commandResult << endl;
|
||||
return commandResult;
|
||||
}
|
||||
}
|
||||
|
@ -413,7 +412,6 @@ bool DebuggerParser::getArgs(const string& command, string& verb)
|
|||
argStrings.push_back(curArg);
|
||||
|
||||
argCount = argStrings.size();
|
||||
cerr << "count = " << argCount << endl;
|
||||
/*
|
||||
cerr << "verb = " << verb << endl;
|
||||
cerr << "arguments (" << argCount << "):\n";
|
||||
|
@ -1729,7 +1727,7 @@ DebuggerParser::Command DebuggerParser::commands[kNumCommands] = {
|
|||
{
|
||||
"runto",
|
||||
"Run until first occurrence of string in disassembly",
|
||||
false,
|
||||
true,
|
||||
true,
|
||||
{ kARG_LABEL, kARG_END_ARGS },
|
||||
&DebuggerParser::executeRunTo
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PromptWidget.cxx,v 1.19 2007-08-14 19:49:20 stephena Exp $
|
||||
// $Id: PromptWidget.cxx,v 1.20 2007-08-14 20:36:18 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -49,7 +49,8 @@ PromptWidget::PromptWidget(GuiObject* boss, const GUI::Font& font,
|
|||
: Widget(boss, font, x, y, w - kScrollBarWidth, h),
|
||||
CommandSender(boss),
|
||||
_makeDirty(false),
|
||||
_firstTime(true)
|
||||
_firstTime(true),
|
||||
_exitedEarly(false)
|
||||
{
|
||||
_flags = WIDGET_ENABLED | WIDGET_CLEARBG | WIDGET_RETAIN_FOCUS |
|
||||
WIDGET_WANTS_TAB | WIDGET_WANTS_RAWDATA;
|
||||
|
@ -194,11 +195,13 @@ bool PromptWidget::handleKeyDown(int ascii, int keycode, int modifiers)
|
|||
// This is a bit of a hack
|
||||
// Certain commands remove the debugger dialog from underneath us,
|
||||
// so we shouldn't print any messages
|
||||
// Those commands will return 'EXIT_DEBUGGER' as their result
|
||||
//cerr << " ==> result = \'" << result << "\'\n";
|
||||
// Those commands will return '_EXIT_DEBUGGER' as their result
|
||||
if(result == "_EXIT_DEBUGGER")
|
||||
{
|
||||
_exitedEarly = true;
|
||||
return true;
|
||||
|
||||
}
|
||||
else
|
||||
print(result + "\n");
|
||||
}
|
||||
|
||||
|
@ -509,18 +512,6 @@ GUI::Rect PromptWidget::getRect() const
|
|||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
void PromptWidget::loadConfig()
|
||||
{
|
||||
cerr << "loadConfig()" << endl
|
||||
<< "_promptStartPos = " << _promptStartPos << endl
|
||||
<< "_promptEndPos = " << _promptEndPos << endl
|
||||
<< "_currentPos = " << _currentPos << endl
|
||||
<< endl;
|
||||
|
||||
if(_promptStartPos != _currentPos)
|
||||
{
|
||||
print(PROMPT);
|
||||
_promptStartPos = _promptEndPos = _currentPos;
|
||||
}
|
||||
|
||||
// See logic at the end of handleKeyDown for an explanation of this
|
||||
_makeDirty = true;
|
||||
|
||||
|
@ -539,6 +530,11 @@ cerr << "loadConfig()" << endl
|
|||
// Take care of one-time debugger stuff
|
||||
instance()->debugger().autoExec();
|
||||
}
|
||||
else if(_exitedEarly)
|
||||
{
|
||||
printPrompt();
|
||||
_exitedEarly = false;
|
||||
}
|
||||
}
|
||||
|
||||
// - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
|
||||
|
|
|
@ -13,7 +13,7 @@
|
|||
// See the file "license" for information on usage and redistribution of
|
||||
// this file, and for a DISCLAIMER OF ALL WARRANTIES.
|
||||
//
|
||||
// $Id: PromptWidget.hxx,v 1.10 2007-08-14 19:49:20 stephena Exp $
|
||||
// $Id: PromptWidget.hxx,v 1.11 2007-08-14 20:36:18 stephena Exp $
|
||||
//
|
||||
// Based on code from ScummVM - Scumm Interpreter
|
||||
// Copyright (C) 2002-2004 The ScummVM project
|
||||
|
@ -31,13 +31,6 @@ class ScrollBarWidget;
|
|||
#include "Command.hxx"
|
||||
#include "bspf.hxx"
|
||||
|
||||
enum {
|
||||
kBufferSize = 32768,
|
||||
kLineBufferSize = 256,
|
||||
|
||||
kHistorySize = 20
|
||||
};
|
||||
|
||||
class PromptWidget : public Widget, public CommandSender
|
||||
{
|
||||
public:
|
||||
|
@ -86,6 +79,12 @@ class PromptWidget : public Widget, public CommandSender
|
|||
void loadConfig();
|
||||
|
||||
private:
|
||||
enum {
|
||||
kBufferSize = 32768,
|
||||
kLineBufferSize = 256,
|
||||
kHistorySize = 20
|
||||
};
|
||||
|
||||
int _buffer[kBufferSize];
|
||||
int _linesInBuffer;
|
||||
|
||||
|
@ -115,6 +114,7 @@ class PromptWidget : public Widget, public CommandSender
|
|||
bool _inverse;
|
||||
bool _makeDirty;
|
||||
bool _firstTime;
|
||||
bool _exitedEarly;
|
||||
|
||||
int compareHistory(const char *histLine);
|
||||
};
|
||||
|
|
Loading…
Reference in New Issue