|
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