Fossil SCM

Update the backtrace output formatting to the log file so that it is easy to copy/paste the backtrace hex addresses into an "addr2line" command-line in order to get symbolic names.

drh 2024-03-29 11:27 trunk
Commit daaf9ee79c17f25d1d70506c1b9953f5fe5c71b0eea7321ef9a2000063ca0be8
1 file changed +9 -1
+9 -1
--- src/main.c
+++ src/main.c
@@ -1573,11 +1573,19 @@
15731573
size = backtrace(array, sizeof(array)/sizeof(array[0]));
15741574
strings = backtrace_symbols(array, size);
15751575
blob_init(&out, 0, 0);
15761576
blob_appendf(&out, "Segfault during %s", g.zPhase);
15771577
for(i=0; i<size; i++){
1578
- blob_appendf(&out, "\n(%d) %s", i, strings[i]);
1578
+ size_t len;
1579
+ const char *z = strings[i];
1580
+ if( i==0 ) blob_appendf(&out, "\nBacktrace:");
1581
+ len = strlen(strings[i]);
1582
+ if( z[0]=='[' && z[len-1]==']' ){
1583
+ blob_appendf(&out, " %.*s", (int)(len-2), &z[1]);
1584
+ }else{
1585
+ blob_appendf(&out, " %s", z);
1586
+ }
15791587
}
15801588
fossil_panic("%s", blob_str(&out));
15811589
#else
15821590
fossil_panic("Segfault during %s", g.zPhase);
15831591
#endif
15841592
--- src/main.c
+++ src/main.c
@@ -1573,11 +1573,19 @@
1573 size = backtrace(array, sizeof(array)/sizeof(array[0]));
1574 strings = backtrace_symbols(array, size);
1575 blob_init(&out, 0, 0);
1576 blob_appendf(&out, "Segfault during %s", g.zPhase);
1577 for(i=0; i<size; i++){
1578 blob_appendf(&out, "\n(%d) %s", i, strings[i]);
 
 
 
 
 
 
 
 
1579 }
1580 fossil_panic("%s", blob_str(&out));
1581 #else
1582 fossil_panic("Segfault during %s", g.zPhase);
1583 #endif
1584
--- src/main.c
+++ src/main.c
@@ -1573,11 +1573,19 @@
1573 size = backtrace(array, sizeof(array)/sizeof(array[0]));
1574 strings = backtrace_symbols(array, size);
1575 blob_init(&out, 0, 0);
1576 blob_appendf(&out, "Segfault during %s", g.zPhase);
1577 for(i=0; i<size; i++){
1578 size_t len;
1579 const char *z = strings[i];
1580 if( i==0 ) blob_appendf(&out, "\nBacktrace:");
1581 len = strlen(strings[i]);
1582 if( z[0]=='[' && z[len-1]==']' ){
1583 blob_appendf(&out, " %.*s", (int)(len-2), &z[1]);
1584 }else{
1585 blob_appendf(&out, " %s", z);
1586 }
1587 }
1588 fossil_panic("%s", blob_str(&out));
1589 #else
1590 fossil_panic("Segfault during %s", g.zPhase);
1591 #endif
1592

Keyboard Shortcuts

Open search /
Next entry (timeline) j
Previous entry (timeline) k
Open focused entry Enter
Show this help ?
Toggle theme Top nav button