@@ -30,6 +30,8 @@ name "_" holds a reference to the last result displayed!
30
30
Py_REF_DEBUG also checks after every decref to verify that the refcount hasn't
31
31
gone negative, and causes an immediate fatal error if it has.
32
32
33
+ Py_DEBUG implies Py_REF_DEBUG.
34
+
33
35
Special gimmicks:
34
36
35
37
sys.gettotalrefcount()
@@ -39,6 +41,8 @@ sys.gettotalrefcount()
39
41
Py_TRACE_REFS
40
42
-------------
41
43
44
+ Build option: ``./configure --with-trace-refs``.
45
+
42
46
Turn on heavy reference debugging. This is major surgery. Every PyObject grows
43
47
two more pointers, to maintain a doubly-linked list of all live heap-allocated
44
48
objects. Most built-in type objects are not in this list, as they're statically
@@ -49,8 +53,6 @@ has been created.
49
53
Note that because the fundamental PyObject layout changes, Python modules
50
54
compiled with Py_TRACE_REFS are incompatible with modules compiled without it.
51
55
52
- Py_TRACE_REFS implies Py_REF_DEBUG.
53
-
54
56
Special gimmicks:
55
57
56
58
sys.getobjects(max[, type])
@@ -138,7 +140,8 @@ look at the object, you're likely to see that it's entirely filled with 0xDB
138
140
(meaning freed memory is getting used) or 0xCB (meaning uninitialized memory is
139
141
getting used).
140
142
141
- Note that PYMALLOC_DEBUG requires WITH_PYMALLOC.
143
+ Note that PYMALLOC_DEBUG requires WITH_PYMALLOC. Py_DEBUG implies
144
+ PYMALLOC_DEBUG (if WITH_PYMALLOC is enabled).
142
145
143
146
Special gimmicks:
144
147
@@ -156,7 +159,7 @@ Py_DEBUG
156
159
157
160
This is what is generally meant by "a debug build" of Python.
158
161
159
- Py_DEBUG implies LLTRACE, Py_REF_DEBUG, Py_TRACE_REFS, and PYMALLOC_DEBUG (if
162
+ Py_DEBUG implies LLTRACE, Py_REF_DEBUG, and PYMALLOC_DEBUG (if
160
163
WITH_PYMALLOC is enabled). In addition, C assert()s are enabled (via the C way:
161
164
by not defining NDEBUG), and some routines do additional sanity checks inside
162
165
"#ifdef Py_DEBUG" blocks.
@@ -223,3 +226,5 @@ the interpreter is doing are sprayed to stdout, such as every opcode and opcode
223
226
argument and values pushed onto and popped off the value stack.
224
227
225
228
Not useful very often, but very useful when needed.
229
+
230
+ Py_DEBUG implies LLTRACE.
0 commit comments