add some debugging BREADCRUMBS to identify caller of some functions

Only takes effect if a developer uncomments BREADCRUMBS in config.h
This commit is contained in:
nhmall
2019-06-03 18:37:45 -04:00
parent cccdeb6b01
commit fd585a58c2
5 changed files with 90 additions and 8 deletions
+3 -1
View File
@@ -1,4 +1,4 @@
$NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.31 $ $NHDT-Date: 1559422205 2019/06/01 20:50:05 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.33 $ $NHDT-Date: 1559601004 2019/06/03 22:30:04 $
This fixes36.3 file is here to capture information about updates in the 3.6.x This fixes36.3 file is here to capture information about updates in the 3.6.x
lineage following the release of 3.6.2 in May 2019. Please note, however, lineage following the release of 3.6.2 in May 2019. Please note, however,
@@ -91,4 +91,6 @@ add a couple of engraving suggestions in pull request #79
Code Cleanup and Reorganization Code Cleanup and Reorganization
------------------------------- -------------------------------
began to add some function caller BREADCRUMBS to aid debugging
+7 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 config.h $NHDT-Date: 1558248715 2019/05/19 06:51:55 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.122 $ */ /* NetHack 3.6 config.h $NHDT-Date: 1559601008 2019/06/03 22:30:08 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.123 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Robert Patrick Rankin, 2016. */ /*-Copyright (c) Robert Patrick Rankin, 2016. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -526,6 +526,12 @@ typedef unsigned char uchar;
* probably not useful for normal play */ * probably not useful for normal play */
/* #define EXTRA_SANITY_CHECKS */ /* #define EXTRA_SANITY_CHECKS */
/* BREADCRUMBS employs the use of predefined compiler macros
* __FUNCTION__ and __LINE__ to store some caller breadcrumbs
* for use during heavy debugging sessions. Only define if your
* compiler supports those predefined macros and you are debugging */
/* #define BREADCRUMBS */
/* EDIT_GETLIN makes the string input in TTY, curses, Qt4, and X11 /* EDIT_GETLIN makes the string input in TTY, curses, Qt4, and X11
for some prompts be pre-loaded with previously input text (from for some prompts be pre-loaded with previously input text (from
a previous instance of the same prompt) as the default response. a previous instance of the same prompt) as the default response.
+7 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 decl.h $NHDT-Date: 1547025154 2019/01/09 09:12:34 $ $NHDT-Branch: NetHack-3.6.2-beta01 $:$NHDT-Revision: 1.147 $ */ /* NetHack 3.6 decl.h $NHDT-Date: 1559601011 2019/06/03 22:30:11 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.150 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) Michael Allison, 2007. */ /*-Copyright (c) Michael Allison, 2007. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -431,6 +431,12 @@ struct plinemsg_type {
E struct plinemsg_type *plinemsg_types; E struct plinemsg_type *plinemsg_types;
struct breadcrumbs {
const char *funcnm;
int linenum;
boolean in_effect;
};
#ifdef PANICTRACE #ifdef PANICTRACE
E const char *ARGV0; E const char *ARGV0;
#endif #endif
+8 -1
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 extern.h $NHDT-Date: 1559422206 2019/06/01 20:50:06 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.707 $ */ /* NetHack 3.6 extern.h $NHDT-Date: 1559601014 2019/06/03 22:30:14 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.708 $ */
/* Copyright (c) Steve Creps, 1988. */ /* Copyright (c) Steve Creps, 1988. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -127,8 +127,15 @@ E void FDECL(uchangealign, (int, int));
E void FDECL(ballrelease, (BOOLEAN_P)); E void FDECL(ballrelease, (BOOLEAN_P));
E void NDECL(ballfall); E void NDECL(ballfall);
#ifndef BREADCRUMBS
E void NDECL(placebc); E void NDECL(placebc);
E void NDECL(unplacebc); E void NDECL(unplacebc);
#else
E void FDECL(Placebc, (const char *, int));
E void FDECL(Unplacebc, (const char *, int));
#define placebc() Placebc(__FUNCTION__, __LINE__)
#define unplacebc() Unplacebc(__FUNCTION__, __LINE__)
#endif
E void FDECL(set_bc, (int)); E void FDECL(set_bc, (int));
E void FDECL(move_bc, (int, int, XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P)); E void FDECL(move_bc, (int, int, XCHAR_P, XCHAR_P, XCHAR_P, XCHAR_P));
E boolean FDECL(drag_ball, (XCHAR_P, XCHAR_P, int *, xchar *, xchar *, E boolean FDECL(drag_ball, (XCHAR_P, XCHAR_P, int *, xchar *, xchar *,
+65 -4
View File
@@ -1,4 +1,4 @@
/* NetHack 3.6 ball.c $NHDT-Date: 1559554598 2019/06/03 09:36:38 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.39 $ */ /* NetHack 3.6 ball.c $NHDT-Date: 1559601027 2019/06/03 22:30:27 $ $NHDT-Branch: NetHack-3.6 $:$NHDT-Revision: 1.40 $ */
/* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */ /* Copyright (c) Stichting Mathematisch Centrum, Amsterdam, 1985. */
/*-Copyright (c) David Cohrs, 2006. */ /*-Copyright (c) David Cohrs, 2006. */
/* NetHack may be freely redistributed. See license for details. */ /* NetHack may be freely redistributed. See license for details. */
@@ -10,6 +10,13 @@
STATIC_DCL int NDECL(bc_order); STATIC_DCL int NDECL(bc_order);
STATIC_DCL void NDECL(litter); STATIC_DCL void NDECL(litter);
STATIC_OVL void NDECL(placebc_core);
STATIC_OVL void NDECL(unplacebc_core);
#ifdef BREADCRUMBS
static struct breadcrumbs bcpbreadcrumbs = { (const char *) 0, 0, FALSE},
bcubreadcrumbs = { (const char *) 0, 0, FALSE};
#endif
void void
ballrelease(showmsg) ballrelease(showmsg)
@@ -106,8 +113,8 @@ ballfall()
* *
* Should not be called while swallowed except on waterlevel. * Should not be called while swallowed except on waterlevel.
*/ */
void STATIC_OVL void
placebc() placebc_core()
{ {
if (!uchain || !uball) { if (!uchain || !uball) {
impossible("Where are your ball and chain?"); impossible("Where are your ball and chain?");
@@ -132,8 +139,34 @@ placebc()
newsym(u.ux, u.uy); newsym(u.ux, u.uy);
} }
#ifdef BREADCRUMBS
void void
unplacebc() Placebc(funcnm, linenum)
const char *funcnm;
int linenum;
{
if (uball && bcpbreadcrumbs.in_effect && uball->where == OBJ_FLOOR) {
impossible("placebc collision from %s:%d, already placed by %s:%d",
funcnm, linenum,
bcpbreadcrumbs.funcnm, bcpbreadcrumbs.linenum);
return;
}
bcpbreadcrumbs.in_effect = TRUE;
bcubreadcrumbs.in_effect = FALSE;
bcpbreadcrumbs.funcnm = funcnm;
bcpbreadcrumbs.linenum = linenum;
placebc_core();
}
#else
void
placebc()
{
placebc_core();
}
#endif
STATIC_OVL void
unplacebc_core()
{ {
if (u.uswallow) { if (u.uswallow) {
if (Is_waterlevel(&u.uz)) { if (Is_waterlevel(&u.uz)) {
@@ -164,6 +197,34 @@ unplacebc()
u.bc_felt = 0; /* feel nothing */ u.bc_felt = 0; /* feel nothing */
} }
#ifdef BREADCRUMBS
void
Unplacebc(funcnm, linenum)
const char *funcnm;
int linenum;
{
#if 0
if (uball && bcubreadcrumbs.in_effect && uball->where == OBJ_FREE) {
impossible("placebc collision from %s:%d, already placed by %s:%d",
funcnm, linenum,
bcpbreadcrumbs.funcnm, bcpbreadcrumbs.linenum);
return;
}
#endif
bcpbreadcrumbs.in_effect = FALSE;
bcubreadcrumbs.in_effect = TRUE;
bcubreadcrumbs.funcnm = funcnm;
bcubreadcrumbs.linenum = linenum;
unplacebc_core();
}
#else
void
unplacebc()
{
unplacebc_core();
}
#endif
/* /*
* Return the stacking of the hero's ball & chain. This assumes that the * Return the stacking of the hero's ball & chain. This assumes that the
* hero is being punished. * hero is being punished.