|
11 | 11 |
|
12 | 12 | \begin{libsumtab}{General utilities library summary}{utilities.summary} |
13 | 13 | \ref{utility} & Utility components & \tcode{<utility>} \\ |
14 | | -\ref{pairs} & Pairs & \\ \rowsep |
| 14 | +\ref{pairs} & Pairs & \\ \rowsep |
15 | 15 | \ref{tuple} & Tuples & \tcode{<tuple>} \\ \rowsep |
16 | 16 | \ref{optional} & Optional objects & \tcode{<optional>} \\ \rowsep |
17 | 17 | \ref{variant} & Variants & \tcode{<variant>} \\ \rowsep |
|
23 | 23 | \ref{execpol} & Execution policies & \tcode{<execution>} \\ \rowsep |
24 | 24 | \ref{charconv} & Primitive numeric conversions & \tcode{<charconv>} \\ \rowsep |
25 | 25 | \ref{format} & Formatting & \tcode{<format>} \\ \rowsep |
26 | | -\ref{bit} & Bit manipulation & \tcode{<bit>} \\ \rowsep |
27 | | -\ref{debugging} & Debugging & \tcode{<debugging>} \\ |
| 26 | +\ref{bit} & Bit manipulation & \tcode{<bit>} \\ |
28 | 27 | \end{libsumtab} |
29 | 28 |
|
30 | 29 | \rSec1[utility]{Utility components} |
|
19433 | 19432 | Otherwise, \tcode{endian::native} is not equal |
19434 | 19433 | to either \tcode{endian::big} or \tcode{endian::little}. |
19435 | 19434 | \end{itemdescr} |
19436 | | - |
19437 | | -\rSec1[debugging]{Debugging} |
19438 | | - |
19439 | | -\rSec2[debugging.general]{General} |
19440 | | - |
19441 | | -\pnum |
19442 | | -Subclause \ref{debugging} describes functionality to introspect and |
19443 | | -interact with the execution of the program. |
19444 | | - |
19445 | | -\begin{note} |
19446 | | -The facilities provided by the debugging functionality interact with a program |
19447 | | -that could be tracing the execution of a \Cpp{} program, such as a debugger. |
19448 | | -\end{note} |
19449 | | - |
19450 | | -\rSec2[debugging.syn]{Header \tcode{<debugging>} synopsis} |
19451 | | - |
19452 | | -\indexheader{debugging}% |
19453 | | -\begin{codeblock} |
19454 | | -// all freestanding |
19455 | | -namespace std { |
19456 | | - // \ref{debugging.utility}, utility |
19457 | | - void breakpoint() noexcept; |
19458 | | - void breakpoint_if_debugging() noexcept; |
19459 | | - bool is_debugger_present() noexcept; |
19460 | | -} |
19461 | | -\end{codeblock} |
19462 | | - |
19463 | | -\rSec2[debugging.utility]{Utility} |
19464 | | - |
19465 | | -\indexlibraryglobal{breakpoint}% |
19466 | | -\begin{itemdecl} |
19467 | | -void breakpoint() noexcept; |
19468 | | -\end{itemdecl} |
19469 | | - |
19470 | | -\begin{itemdescr} |
19471 | | - |
19472 | | -\pnum |
19473 | | -The semantics of this function are \impldef{semantics of \tcode{breakpoint}}. |
19474 | | - |
19475 | | -\begin{note} |
19476 | | -When invoked, the execution of the program temporarily halts and execution is |
19477 | | -handed to the debugger until such a time as: The program is terminated by the |
19478 | | -debugger, or the debugger resumes execution of the program as if the function |
19479 | | -was not invoked. |
19480 | | -\end{note} |
19481 | | - |
19482 | | -\end{itemdescr} |
19483 | | - |
19484 | | -\indexlibraryglobal{breakpoint_if_debugging}% |
19485 | | -\begin{itemdecl} |
19486 | | -void breakpoint_if_debugging() noexcept; |
19487 | | -\end{itemdecl} |
19488 | | - |
19489 | | -\begin{itemdescr} |
19490 | | - |
19491 | | -\pnum |
19492 | | -\effects |
19493 | | -Equivalent to: |
19494 | | -\begin{codeblock} |
19495 | | -if (is_debugger_present()) breakpoint(); |
19496 | | -\end{codeblock} |
19497 | | - |
19498 | | -\end{itemdescr} |
19499 | | - |
19500 | | -\indexlibraryglobal{is_debugger_present}% |
19501 | | -\begin{itemdecl} |
19502 | | -bool is_debugger_present() noexcept; |
19503 | | -\end{itemdecl} |
19504 | | - |
19505 | | -\begin{itemdescr} |
19506 | | -\pnum |
19507 | | -\replaceable |
19508 | | -A \Cpp{} program may define a function with this function signature, and |
19509 | | -thereby displace the default version defined by the \Cpp{} standard library. |
19510 | | - |
19511 | | -\pnum |
19512 | | -\required |
19513 | | -This function has no preconditions. |
19514 | | - |
19515 | | -\pnum |
19516 | | -\default |
19517 | | -\impldef{default semantics of \tcode{is_debugger_present}}. |
19518 | | - |
19519 | | -\begin{note} |
19520 | | -When tracing the execution of a program with a debugger, an implementation |
19521 | | -returns \tcode{true}. An implementation performs an immediate query, as needed, |
19522 | | -to determine if the program is traced by a debugger. On Windows or equivalent |
19523 | | -systems, this can be achieved by calling the \tcode{::IsDebuggerPresent()} Win32 |
19524 | | -function. On POSIX, this can be achieved by checking for a tracer parent process, |
19525 | | -with best effort determination that such a tracer parent process is a debugger. |
19526 | | -\end{note} |
19527 | | - |
19528 | | -\end{itemdescr} |
0 commit comments