tmp/tmp5_w15gs_/{from.md → to.md}
RENAMED
|
@@ -0,0 +1,157 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 1 |
+
## Debugging <a id="debugging">[[debugging]]</a>
|
| 2 |
+
|
| 3 |
+
### General <a id="debugging.general">[[debugging.general]]</a>
|
| 4 |
+
|
| 5 |
+
Subclause [[debugging]] describes functionality to introspect and
|
| 6 |
+
interact with the execution of the program.
|
| 7 |
+
|
| 8 |
+
[*Note 1*: The facilities provided by the debugging functionality
|
| 9 |
+
interact with a program that could be tracing the execution of a C++
|
| 10 |
+
program, such as a debugger. — *end note*]
|
| 11 |
+
|
| 12 |
+
### Header `<debugging>` synopsis <a id="debugging.syn">[[debugging.syn]]</a>
|
| 13 |
+
|
| 14 |
+
``` cpp
|
| 15 |
+
// all freestanding
|
| 16 |
+
namespace std {
|
| 17 |
+
// [debugging.utility], utility
|
| 18 |
+
void breakpoint() noexcept;
|
| 19 |
+
void breakpoint_if_debugging() noexcept;
|
| 20 |
+
bool is_debugger_present() noexcept;
|
| 21 |
+
}
|
| 22 |
+
```
|
| 23 |
+
|
| 24 |
+
### Utility <a id="debugging.utility">[[debugging.utility]]</a>
|
| 25 |
+
|
| 26 |
+
``` cpp
|
| 27 |
+
void breakpoint() noexcept;
|
| 28 |
+
```
|
| 29 |
+
|
| 30 |
+
The semantics of this function are *implementation-defined*.
|
| 31 |
+
|
| 32 |
+
[*Note 1*: It is intended that, when invoked with a debugger present,
|
| 33 |
+
the execution of the program temporarily halts and execution is handed
|
| 34 |
+
to the debugger until the program is either terminated by the debugger
|
| 35 |
+
or the debugger resumes execution of the program as if the function was
|
| 36 |
+
not invoked. In particular, there is no intent for a call to this
|
| 37 |
+
function to accomodate resumption of the program in a different manner.
|
| 38 |
+
If there is no debugger present, execution of the program can end
|
| 39 |
+
abnormally. — *end note*]
|
| 40 |
+
|
| 41 |
+
``` cpp
|
| 42 |
+
void breakpoint_if_debugging() noexcept;
|
| 43 |
+
```
|
| 44 |
+
|
| 45 |
+
*Effects:* Equivalent to:
|
| 46 |
+
|
| 47 |
+
``` cpp
|
| 48 |
+
if (is_debugger_present()) breakpoint();
|
| 49 |
+
```
|
| 50 |
+
|
| 51 |
+
``` cpp
|
| 52 |
+
bool is_debugger_present() noexcept;
|
| 53 |
+
```
|
| 54 |
+
|
| 55 |
+
*Required behavior:* This function has no preconditions.
|
| 56 |
+
|
| 57 |
+
*Default behavior:* *implementation-defined*.
|
| 58 |
+
|
| 59 |
+
[*Note 2*: It is intended that, using an immediate (uncached) query to
|
| 60 |
+
determine if the program is being traced by a debugger, an
|
| 61 |
+
implementation returns `true` only when tracing the execution of the
|
| 62 |
+
program with a debugger. On Windows or equivalent systems, this can be
|
| 63 |
+
achieved by calling the `::IsDebuggerPresent()` Win32 function. For
|
| 64 |
+
systems compatible with ISO/IEC 23360:2021, this can be achieved by
|
| 65 |
+
checking for a tracing process, with a best-effort determination that
|
| 66 |
+
such a tracing process is a debugger. — *end note*]
|
| 67 |
+
|
| 68 |
+
*Remarks:* This function is replaceable [[term.replaceable.function]].
|
| 69 |
+
|
| 70 |
+
<!-- Link reference definitions -->
|
| 71 |
+
[assertions]: #assertions
|
| 72 |
+
[assertions.assert]: #assertions.assert
|
| 73 |
+
[assertions.general]: #assertions.general
|
| 74 |
+
[bad.alloc]: support.md#bad.alloc
|
| 75 |
+
[cassert.syn]: #cassert.syn
|
| 76 |
+
[cerrno.syn]: #cerrno.syn
|
| 77 |
+
[cmp.concept]: support.md#cmp.concept
|
| 78 |
+
[comparisons.three.way]: utilities.md#comparisons.three.way
|
| 79 |
+
[concepts.object]: concepts.md#concepts.object
|
| 80 |
+
[container.alloc.reqmts]: containers.md#container.alloc.reqmts
|
| 81 |
+
[container.rev.reqmts]: containers.md#container.rev.reqmts
|
| 82 |
+
[conv]: expr.md#conv
|
| 83 |
+
[cpp.predefined]: cpp.md#cpp.predefined
|
| 84 |
+
[debugging]: #debugging
|
| 85 |
+
[debugging.general]: #debugging.general
|
| 86 |
+
[debugging.syn]: #debugging.syn
|
| 87 |
+
[debugging.utility]: #debugging.utility
|
| 88 |
+
[defns.const.subexpr]: intro.md#defns.const.subexpr
|
| 89 |
+
[diagnostics]: #diagnostics
|
| 90 |
+
[diagnostics.general]: #diagnostics.general
|
| 91 |
+
[diagnostics.summary]: #diagnostics.summary
|
| 92 |
+
[domain.error]: #domain.error
|
| 93 |
+
[errno]: #errno
|
| 94 |
+
[errno.general]: #errno.general
|
| 95 |
+
[format.string.std]: text.md#format.string.std
|
| 96 |
+
[intro.execution]: basic.md#intro.execution
|
| 97 |
+
[invalid.argument]: #invalid.argument
|
| 98 |
+
[iterator.concept.random.access]: iterators.md#iterator.concept.random.access
|
| 99 |
+
[length.error]: #length.error
|
| 100 |
+
[logic.error]: #logic.error
|
| 101 |
+
[out.of.range]: #out.of.range
|
| 102 |
+
[overflow.error]: #overflow.error
|
| 103 |
+
[random.access.iterators]: iterators.md#random.access.iterators
|
| 104 |
+
[range.error]: #range.error
|
| 105 |
+
[res.on.exception.handling]: library.md#res.on.exception.handling
|
| 106 |
+
[runtime.error]: #runtime.error
|
| 107 |
+
[sequence.reqmts]: containers.md#sequence.reqmts
|
| 108 |
+
[stacktrace]: #stacktrace
|
| 109 |
+
[stacktrace.basic]: #stacktrace.basic
|
| 110 |
+
[stacktrace.basic.cmp]: #stacktrace.basic.cmp
|
| 111 |
+
[stacktrace.basic.cons]: #stacktrace.basic.cons
|
| 112 |
+
[stacktrace.basic.hash]: #stacktrace.basic.hash
|
| 113 |
+
[stacktrace.basic.mod]: #stacktrace.basic.mod
|
| 114 |
+
[stacktrace.basic.nonmem]: #stacktrace.basic.nonmem
|
| 115 |
+
[stacktrace.basic.obs]: #stacktrace.basic.obs
|
| 116 |
+
[stacktrace.basic.overview]: #stacktrace.basic.overview
|
| 117 |
+
[stacktrace.entry]: #stacktrace.entry
|
| 118 |
+
[stacktrace.entry.cmp]: #stacktrace.entry.cmp
|
| 119 |
+
[stacktrace.entry.cons]: #stacktrace.entry.cons
|
| 120 |
+
[stacktrace.entry.obs]: #stacktrace.entry.obs
|
| 121 |
+
[stacktrace.entry.overview]: #stacktrace.entry.overview
|
| 122 |
+
[stacktrace.entry.query]: #stacktrace.entry.query
|
| 123 |
+
[stacktrace.format]: #stacktrace.format
|
| 124 |
+
[stacktrace.general]: #stacktrace.general
|
| 125 |
+
[stacktrace.syn]: #stacktrace.syn
|
| 126 |
+
[std.exceptions]: #std.exceptions
|
| 127 |
+
[std.exceptions.general]: #std.exceptions.general
|
| 128 |
+
[stdexcept.syn]: #stdexcept.syn
|
| 129 |
+
[syserr]: #syserr
|
| 130 |
+
[syserr.compare]: #syserr.compare
|
| 131 |
+
[syserr.errcat]: #syserr.errcat
|
| 132 |
+
[syserr.errcat.derived]: #syserr.errcat.derived
|
| 133 |
+
[syserr.errcat.nonvirtuals]: #syserr.errcat.nonvirtuals
|
| 134 |
+
[syserr.errcat.objects]: #syserr.errcat.objects
|
| 135 |
+
[syserr.errcat.overview]: #syserr.errcat.overview
|
| 136 |
+
[syserr.errcat.virtuals]: #syserr.errcat.virtuals
|
| 137 |
+
[syserr.errcode]: #syserr.errcode
|
| 138 |
+
[syserr.errcode.constructors]: #syserr.errcode.constructors
|
| 139 |
+
[syserr.errcode.modifiers]: #syserr.errcode.modifiers
|
| 140 |
+
[syserr.errcode.nonmembers]: #syserr.errcode.nonmembers
|
| 141 |
+
[syserr.errcode.observers]: #syserr.errcode.observers
|
| 142 |
+
[syserr.errcode.overview]: #syserr.errcode.overview
|
| 143 |
+
[syserr.errcondition]: #syserr.errcondition
|
| 144 |
+
[syserr.errcondition.constructors]: #syserr.errcondition.constructors
|
| 145 |
+
[syserr.errcondition.modifiers]: #syserr.errcondition.modifiers
|
| 146 |
+
[syserr.errcondition.nonmembers]: #syserr.errcondition.nonmembers
|
| 147 |
+
[syserr.errcondition.observers]: #syserr.errcondition.observers
|
| 148 |
+
[syserr.errcondition.overview]: #syserr.errcondition.overview
|
| 149 |
+
[syserr.general]: #syserr.general
|
| 150 |
+
[syserr.hash]: #syserr.hash
|
| 151 |
+
[syserr.syserr]: #syserr.syserr
|
| 152 |
+
[syserr.syserr.members]: #syserr.syserr.members
|
| 153 |
+
[syserr.syserr.overview]: #syserr.syserr.overview
|
| 154 |
+
[system.error.syn]: #system.error.syn
|
| 155 |
+
[term.replaceable.function]: dcl.md#term.replaceable.function
|
| 156 |
+
[underflow.error]: #underflow.error
|
| 157 |
+
[unord.hash]: utilities.md#unord.hash
|