mirror of https://github.com/OpenTTD/OpenTTD.git
(svn r2352) - Feature: add the possibility to print out the current debug-level
This commit is contained in:
parent
1ab7238c15
commit
519c4161d5
|
@ -833,13 +833,17 @@ DEF_CONSOLE_CMD(ConInfoCmd)
|
|||
DEF_CONSOLE_CMD(ConDebugLevel)
|
||||
{
|
||||
if (argc == 0) {
|
||||
IConsoleHelp("Set the default debugging level for the game. Usage: 'debug_level <level>'");
|
||||
IConsoleHelp("Get/set the default debugging level for the game. Usage: 'debug_level [<level>]'");
|
||||
IConsoleHelp("Level can be any combination of names, levels. Eg 'net=5 ms=4'. Remember to enclose it in \"'s");
|
||||
return true;
|
||||
}
|
||||
|
||||
if (argc < 2) return false;
|
||||
SetDebugString(argv[1]);
|
||||
if (argc > 2) return false;
|
||||
|
||||
if (argc == 1) {
|
||||
IConsolePrintF(_icolour_def, "Current debug-level: '%s'", GetDebugString());
|
||||
} else SetDebugString(argv[1]);
|
||||
|
||||
return true;
|
||||
}
|
||||
|
||||
|
|
60
debug.c
60
debug.c
|
@ -4,6 +4,7 @@
|
|||
#include "ttd.h"
|
||||
#include "console.h"
|
||||
#include "debug.h"
|
||||
#include "string.h"
|
||||
|
||||
int _debug_ai_level;
|
||||
int _debug_grf_level;
|
||||
|
@ -28,6 +29,24 @@ void CDECL debug(const char *s, ...)
|
|||
IConsoleDebug(buf);
|
||||
}
|
||||
|
||||
typedef struct DebugLevel {
|
||||
const char *name;
|
||||
int *level;
|
||||
} DebugLevel;
|
||||
|
||||
#define DEBUG_LEVEL(x) { #x, &_debug_##x##_level }
|
||||
static const DebugLevel debug_level[] = {
|
||||
DEBUG_LEVEL(ai),
|
||||
DEBUG_LEVEL(grf),
|
||||
DEBUG_LEVEL(map),
|
||||
DEBUG_LEVEL(misc),
|
||||
DEBUG_LEVEL(ms),
|
||||
DEBUG_LEVEL(net),
|
||||
DEBUG_LEVEL(spritecache),
|
||||
DEBUG_LEVEL(oldloader),
|
||||
DEBUG_LEVEL(npf)
|
||||
};
|
||||
#undef DEBUG_LEVEL
|
||||
|
||||
void SetDebugString(const char *s)
|
||||
{
|
||||
|
@ -35,25 +54,6 @@ void SetDebugString(const char *s)
|
|||
char *end;
|
||||
const char *t;
|
||||
|
||||
typedef struct DebugLevel {
|
||||
const char* name;
|
||||
int* level;
|
||||
} DebugLevel;
|
||||
|
||||
#define DEBUG_LEVEL(x) { #x, &_debug_##x##_level }
|
||||
static const DebugLevel debug_level[] = {
|
||||
DEBUG_LEVEL(ai),
|
||||
DEBUG_LEVEL(grf),
|
||||
DEBUG_LEVEL(map),
|
||||
DEBUG_LEVEL(misc),
|
||||
DEBUG_LEVEL(ms),
|
||||
DEBUG_LEVEL(net),
|
||||
DEBUG_LEVEL(spritecache),
|
||||
DEBUG_LEVEL(oldloader),
|
||||
DEBUG_LEVEL(npf)
|
||||
};
|
||||
#undef DEBUG_LEVEL
|
||||
|
||||
// global debugging level?
|
||||
if (*s >= '0' && *s <= '9') {
|
||||
const DebugLevel *i;
|
||||
|
@ -96,3 +96,25 @@ void SetDebugString(const char *s)
|
|||
}
|
||||
}
|
||||
}
|
||||
|
||||
/** Print out the current debug-level
|
||||
* Just return a string with the values of all the debug categorites
|
||||
* @return string with debug-levels
|
||||
*/
|
||||
const char *GetDebugString(void)
|
||||
{
|
||||
const DebugLevel *i;
|
||||
static char dbgstr[100];
|
||||
char dbgval[20];
|
||||
|
||||
memset(dbgstr, 0, sizeof(dbgstr));
|
||||
i = debug_level;
|
||||
snprintf(dbgstr, sizeof(dbgstr), "%s=%d", i->name, *i->level);
|
||||
|
||||
for (i++; i != endof(debug_level); i++) {
|
||||
snprintf(dbgval, sizeof(dbgval), ", %s=%d", i->name, *i->level);
|
||||
ttd_strlcat(dbgstr, dbgval, sizeof(dbgstr));
|
||||
}
|
||||
|
||||
return dbgstr;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue