1 |
dpavlin |
1 |
#include <signal.h> |
2 |
|
|
#include <stdio.h> |
3 |
|
|
#include <stdlib.h> |
4 |
|
|
|
5 |
|
|
#include "debug.h" |
6 |
|
|
#include "system/types.h" |
7 |
|
|
|
8 |
|
|
extern "C" void NORETURN ht_assert_failed(const char *file, int line, const char *assertion) |
9 |
|
|
{ |
10 |
|
|
fprintf(stderr, "in file %s, line %d: assertion failed: %s\n", file, line, assertion); |
11 |
|
|
#ifndef WIN32 |
12 |
|
|
#if 1 |
13 |
|
|
fprintf(stderr, "sending SIGTRAP..."); |
14 |
|
|
raise(SIGTRAP); |
15 |
|
|
#endif |
16 |
|
|
#endif |
17 |
|
|
exit(1); |
18 |
|
|
} |
19 |
|
|
|
20 |
|
|
void debugDumpMem(void *buf, int len) |
21 |
|
|
{ |
22 |
|
|
byte *p = (byte*)buf; |
23 |
|
|
while (len) { |
24 |
|
|
uint w = 16; |
25 |
|
|
uint m = w; |
26 |
|
|
if (m>len) m = len; |
27 |
|
|
for (uint i=0; i<m; i++) { |
28 |
|
|
printf("%02x ", *p); |
29 |
|
|
p++; |
30 |
|
|
} |
31 |
|
|
for (uint i=0; i<w-m; i++) { |
32 |
|
|
printf(" "); |
33 |
|
|
} |
34 |
|
|
p-=m; |
35 |
|
|
for (uint i=0; i<m; i++) { |
36 |
|
|
printf("%c", ((*p < 32) || (*p > 0x80)) ? '.' : *p); |
37 |
|
|
p++; |
38 |
|
|
} |
39 |
|
|
printf("\n"); |
40 |
|
|
len -= m; |
41 |
|
|
} |
42 |
|
|
} |