mirror of
http://git.haproxy.org/git/haproxy.git/
synced 2024-12-14 23:44:41 +00:00
f853320b44
A new member has been added to the struct session. It keeps a trace of what block of code performs a close or a shutdown on a socket, and in what sequence. This is extremely convenient for post-mortem analysis where flag combinations and states seem impossible. A new ABORT_NOW() macro has also been added to make the code immediately segfault where called.
59 lines
1.8 KiB
C
59 lines
1.8 KiB
C
/*
|
|
include/common/debug.h
|
|
This files contains some macros to help debugging.
|
|
|
|
Copyright (C) 2000-2006 Willy Tarreau - w@1wt.eu
|
|
|
|
This library is free software; you can redistribute it and/or
|
|
modify it under the terms of the GNU Lesser General Public
|
|
License as published by the Free Software Foundation, version 2.1
|
|
exclusively.
|
|
|
|
This library is distributed in the hope that it will be useful,
|
|
but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
|
Lesser General Public License for more details.
|
|
|
|
You should have received a copy of the GNU Lesser General Public
|
|
License along with this library; if not, write to the Free Software
|
|
Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA
|
|
*/
|
|
|
|
#ifndef _COMMON_DEBUG_H
|
|
#define _COMMON_DEBUG_H
|
|
|
|
#include <common/config.h>
|
|
|
|
#ifdef DEBUG_FULL
|
|
#define DPRINTF(x...) fprintf(x)
|
|
#else
|
|
#define DPRINTF(x...)
|
|
#endif
|
|
|
|
#ifdef DEBUG_FSM
|
|
#define FSM_PRINTF(x...) fprintf(x)
|
|
#else
|
|
#define FSM_PRINTF(x...)
|
|
#endif
|
|
|
|
/* This abort is more efficient than abort() because it does not mangle the
|
|
* stack and stops at the exact location we need.
|
|
*/
|
|
#define ABORT_NOW() (*(int*)0=0)
|
|
|
|
/* this one is provided for easy code tracing.
|
|
* Usage: TRACE(sess||0, fmt, args...);
|
|
* TRACE(sess, "");
|
|
*/
|
|
#define TRACE(sess, fmt, args...) do { \
|
|
fprintf(stderr, \
|
|
"%d.%06d [%s:%d %s] [sess %p(%x)] " fmt "\n", \
|
|
(int)now.tv_sec, (int)now.tv_usec, \
|
|
__FILE__, __LINE__, __FUNCTION__, \
|
|
sess, sess?((struct session *)sess)->uniq_id:~0U, \
|
|
##args); \
|
|
} while (0)
|
|
|
|
|
|
#endif /* _COMMON_DEBUG_H */
|