38 #include "kmp_debug.h"
44 __kmp_debug_printf_stdout(
char const * format, ... )
47 va_start( ap, format );
49 __kmp_vprintf( kmp_out, format, ap );
56 __kmp_debug_printf(
char const * format, ... )
59 va_start( ap, format );
61 __kmp_vprintf( kmp_err, format, ap );
75 file = KMP_I18N_STR( UnknownFile );
79 char const * slash = strrchr( file,
'/' );
80 if ( slash != NULL ) {
86 __kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
87 __kmp_debug_printf(
"Assertion failure at %s(%d): %s.\n", file, line, msg );
88 __kmp_release_bootstrap_lock( & __kmp_stdio_lock );
89 #ifdef USE_ASSERT_BREAK
93 #endif // USE_ASSERT_BREAK
94 #ifdef USE_ASSERT_STALL
97 #endif // USE_ASSERT_STALL
100 int volatile * ZERO = (
int*) 0;
103 #endif // USE_ASSERT_SEG
108 KMP_MSG( AssertionFailure, file, line ),
109 KMP_HNT( SubmitBugReport ),
117 #endif // KMP_USE_ASSERT
121 __kmp_dump_debug_buffer(
void )
123 if ( __kmp_debug_buffer != NULL ) {
125 int dc = __kmp_debug_count;
126 char *db = & __kmp_debug_buffer[ (dc % __kmp_debug_buf_lines) * __kmp_debug_buf_chars ];
127 char *db_end = & __kmp_debug_buffer[ __kmp_debug_buf_lines * __kmp_debug_buf_chars ];
130 __kmp_acquire_bootstrap_lock( & __kmp_stdio_lock );
131 __kmp_printf_no_lock(
"\nStart dump of debugging buffer (entry=%d):\n",
132 dc % __kmp_debug_buf_lines );
134 for ( i = 0; i < __kmp_debug_buf_lines; i++ ) {
138 for ( db2 = db + 1; db2 < db + __kmp_debug_buf_chars - 1; db2 ++) {
139 if ( *db2 ==
'\0' ) {
140 if ( *(db2-1) !=
'\n' ) { *db2 =
'\n'; *(db2+1) =
'\0'; }
145 if ( db2 == db + __kmp_debug_buf_chars - 1 &&
146 *db2 ==
'\0' && *(db2-1) !=
'\n' ) {
150 __kmp_printf_no_lock(
"%4d: %.*s", i, __kmp_debug_buf_chars, db );
154 db += __kmp_debug_buf_chars;
156 db = __kmp_debug_buffer;
159 __kmp_printf_no_lock(
"End dump of debugging buffer (entry=%d).\n\n",
160 ( dc+i-1 ) % __kmp_debug_buf_lines );
161 __kmp_release_bootstrap_lock( & __kmp_stdio_lock );