| #ifndef THIRD_PARTY_GBMCWEB_INCLUDE_EXCEPTION_STACK_TRACER_INTERNAL_HPP_ |
| #define THIRD_PARTY_GBMCWEB_INCLUDE_EXCEPTION_STACK_TRACER_INTERNAL_HPP_ |
| |
| // Internal surface of the exception stack tracer, exposed only so unit tests |
| // can exercise the record lookup and terminate-formatting logic in-process. |
| // The production terminate handler aborts the process, so exercising that logic |
| // solely through death tests keeps it out of coverage (a forked child that |
| // abort()s never flushes gcov counters) and makes it awkward to assert on. |
| // This is not part of the public API; do not use outside the tracer. |
| namespace exception_stack_tracer_internal { |
| |
| // Logs "terminate: <type>", the exception's what(), and the recorded |
| // throw-site stack (or an "unavailable" line) for the exception currently being |
| // handled. Safe to call with no active exception (logs that and returns). |
| // Shared by the real terminate handler and the unit tests. |
| void logThrowSiteStackOfCurrentException(); |
| |
| // Restores recording state for hermetic tests: re-enables tracing, empties the |
| // throw ring, and forces the module table to be re-snapshotted on the next |
| // installExceptionStackTracer(true) call. |
| void resetForTest(); |
| |
| } // namespace exception_stack_tracer_internal |
| |
| #endif // THIRD_PARTY_GBMCWEB_INCLUDE_EXCEPTION_STACK_TRACER_INTERNAL_HPP_ |