| // Copyright 2022 The Fuchsia Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style license that can be | |
| // found in the LICENSE file. | |
| #ifndef SRC_LIB_DEBUG_DEBUG_H_ | |
| #define SRC_LIB_DEBUG_DEBUG_H_ | |
| #include <cstdint> | |
| namespace debug { | |
| // Return whether there's a debugger attached to the current process. | |
| bool IsDebuggerAttached(); | |
| // Wait until a debugger attaches, and then issue a breakpoint. The debugger can | |
| // continue the execution. | |
| // | |
| // If there's no debugger attached within |seconds| seconds, the breakpoint will | |
| // still be issued and the process will crash. | |
| void WaitForDebugger(uint32_t seconds = 60); | |
| // If a debugger is attached, trigger a breakpoint. Do nothing otherwise. | |
| void BreakIntoDebuggerIfAttached(); | |
| } // namespace debug | |
| #endif // SRC_LIB_DEBUG_DEBUG_H_ |