36 #include "kmp_debug.h"
42 __kmp_debug_printf_stdout(
char const * format, ... )
45 va_start( ap, format );
47 __kmp_vprintf( kmp_out, format, ap );
54 __kmp_debug_printf(
char const * format, ... )
57 va_start( ap, format );
59 __kmp_vprintf( kmp_err, format, ap );
73 file = KMP_I18N_STR( UnknownFile );
77 char const * slash = strrchr( file,
'/' );
78 if ( slash != NULL ) {
84 __kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
85 __kmp_debug_printf(
"Assertion failure at %s(%d): %s.\n", file, line, msg );
86 __kmp_release_bootstrap_lock( & __kmp_stdio_lock );
87 #ifdef USE_ASSERT_BREAK
91 #endif // USE_ASSERT_BREAK
92 #ifdef USE_ASSERT_STALL
95 #endif // USE_ASSERT_STALL
98 int volatile * ZERO = (
int*) 0;
101 #endif // USE_ASSERT_SEG
106 KMP_MSG( AssertionFailure, file, line ),
107 KMP_HNT( SubmitBugReport ),
115 #endif // KMP_USE_ASSERT
119 __kmp_dump_debug_buffer(
void )
121 if ( __kmp_debug_buffer != NULL ) {
123 int dc = __kmp_debug_count;
124 char *db = & __kmp_debug_buffer[ (dc % __kmp_debug_buf_lines) * __kmp_debug_buf_chars ];
125 char *db_end = & __kmp_debug_buffer[ __kmp_debug_buf_lines * __kmp_debug_buf_chars ];
128 __kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
129 __kmp_printf_no_lock(
"\nStart dump of debugging buffer (entry=%d):\n",
130 dc % __kmp_debug_buf_lines );
132 for ( i = 0; i < __kmp_debug_buf_lines; i++ ) {
136 for ( db2 = db + 1; db2 < db + __kmp_debug_buf_chars - 1; db2 ++) {
137 if ( *db2 ==
'\0' ) {
138 if ( *(db2-1) !=
'\n' ) { *db2 =
'\n'; *(db2+1) =
'\0'; }
143 if ( db2 == db + __kmp_debug_buf_chars - 1 &&
144 *db2 ==
'\0' && *(db2-1) !=
'\n' ) {
148 __kmp_printf_no_lock(
"%4d: %.*s", i, __kmp_debug_buf_chars, db );
152 db += __kmp_debug_buf_chars;
154 db = __kmp_debug_buffer;
157 __kmp_printf_no_lock(
"End dump of debugging buffer (entry=%d).\n\n",
158 ( dc+i-1 ) % __kmp_debug_buf_lines );
159 __kmp_release_bootstrap_lock( & __kmp_stdio_lock );