[Scummvm-cvs-logs] CVS: scummvm/scumm debugger.cpp,1.21,1.22 debugger.h,1.13,1.14 scummvm.cpp,2.95,2.96

James Brown ender at users.sourceforge.net
Sun Apr 20 09:26:08 CEST 2003


Update of /cvsroot/scummvm/scummvm/scumm
In directory sc8-pr-cvs1:/tmp/cvs-serv3001/scumm

Modified Files:
	debugger.cpp debugger.h scummvm.cpp 
Log Message:
Dump Scumm error() to debugger


Index: debugger.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.cpp,v
retrieving revision 1.21
retrieving revision 1.22
diff -u -d -r1.21 -r1.22
--- debugger.cpp	20 Apr 2003 14:28:25 -0000	1.21
+++ debugger.cpp	20 Apr 2003 16:25:48 -0000	1.22
@@ -48,9 +48,12 @@
 }
 
 // Initialisation Functions
-void ScummDebugger::attach(Scumm *s) {
+void ScummDebugger::attach(Scumm *s, char *entry) {
 	if (_s)
 		detach();
+
+	if (entry)
+		errStr = strdup(entry);
 	
 	_s = s;
 	s->_debugger = this;
@@ -161,7 +164,14 @@
 #ifdef USE_CONSOLE
 	if (!_s->_debuggerDialog) {
 		_s->_debuggerDialog = new ConsoleDialog(_s->_newgui, _s->_realWidth);
+
 		Debug_Printf("Debugger started, type 'exit' to return to the game\n");
+	}
+
+	if (errStr) {
+		Debug_Printf("ERROR: %s\n\n", errStr);
+		free(errStr);
+		errStr = NULL;
 	}
 	
 	_s->_debuggerDialog->setInputeCallback(debuggerInputCallback, this);

Index: debugger.h
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/debugger.h,v
retrieving revision 1.13
retrieving revision 1.14
diff -u -d -r1.13 -r1.14
--- debugger.h	20 Apr 2003 06:55:09 -0000	1.13
+++ debugger.h	20 Apr 2003 16:25:48 -0000	1.14
@@ -51,7 +51,7 @@
 	ScummDebugger();
 	
 	void on_frame();
-	void attach(Scumm *s);
+	void attach(Scumm *s, char *entry);
 
 protected:
 	Scumm *_s;
@@ -59,6 +59,7 @@
 	DVar _dvars[256];
 	DCmd _dcmds[256];
 	bool _detach_now;
+	char *errStr;
 
 	void enter();
 	void detach();

Index: scummvm.cpp
===================================================================
RCS file: /cvsroot/scummvm/scummvm/scumm/scummvm.cpp,v
retrieving revision 2.95
retrieving revision 2.96
diff -u -d -r2.95 -r2.96
--- scummvm.cpp	20 Apr 2003 08:04:27 -0000	2.95
+++ scummvm.cpp	20 Apr 2003 16:25:48 -0000	2.96
@@ -1400,7 +1400,7 @@
 
 		_vars[VAR_CHARINC] = _defaultTalkDelay / 20;
 	} else if (_lastKeyHit == '~' || _lastKeyHit == '#') { // Debug console
-		g_debugger.attach(this);
+		g_debugger.attach(this, NULL);
 	}
 
 	_mouseButStat = _lastKeyHit;
@@ -1591,6 +1591,15 @@
 	} else {
 		strcpy(buf2, buf1);
 	}
+
+        // Unless an error -originated- within the debugger, spawn the debugger. Otherwise
+        // exit out normally.
+        if (!_debugger) {
+                printf("%s", buf2);	// (Print it again in-case debugger segfaults)
+                g_debugger.attach(this, buf2);
+                g_debugger.on_frame();
+        }
+
 }
 
 void Scumm::waitForTimer(int msec_delay) {
@@ -1638,7 +1647,7 @@
 				else if (event.kbd.keycode == 'g')
 					_fastMode ^= 2;
 				else if ((event.kbd.keycode == 'd') && (!_system->property(OSystem::PROP_GET_FULLSCREEN, 0)))
-					g_debugger.attach(this);
+					g_debugger.attach(this, NULL);
 				else if (event.kbd.keycode == 's')
 					resourceStats();
 				else





More information about the Scummvm-git-logs mailing list