mirror of
https://github.com/python/cpython.git
synced 2025-07-12 05:45:15 +00:00
_Py_PrintReferences(): Changed to print object address at start of each
new line. New pvt API function _Py_PrintReferenceAddresses(): Prints only the addresses and refcnts of the live objects. This is always safe to call, because it has no dependence on Python's C API. Py_Finalize(): If envar PYTHONDUMPREFS is set, call (the new) _Py_PrintReferenceAddresses() right before dumping final pymalloc stats. We can't print the reprs of the objects here because too much of the interpreter has been shut down. You need to correlate the addresses displayed here with the object reprs printed by the earlier PYTHONDUMPREFS call to _Py_PrintReferences().
This commit is contained in:
parent
a4ea603b05
commit
269b2a6797
3 changed files with 26 additions and 3 deletions
|
@ -284,9 +284,8 @@ Py_Finalize(void)
|
|||
* Alas, a lot of stuff may still be alive now that will be cleaned
|
||||
* up later.
|
||||
*/
|
||||
if (Py_GETENV("PYTHONDUMPREFS")) {
|
||||
if (Py_GETENV("PYTHONDUMPREFS"))
|
||||
_Py_PrintReferences(stderr);
|
||||
}
|
||||
#endif /* Py_TRACE_REFS */
|
||||
|
||||
/* Now we decref the exception classes. After this point nothing
|
||||
|
@ -325,6 +324,14 @@ Py_Finalize(void)
|
|||
|
||||
PyGrammar_RemoveAccelerators(&_PyParser_Grammar);
|
||||
|
||||
#ifdef Py_TRACE_REFS
|
||||
/* Display addresses (& refcnts) of all objects still alive.
|
||||
* An address can be used to find the repr of the object, printed
|
||||
* above by _Py_PrintReferences.
|
||||
*/
|
||||
if (Py_GETENV("PYTHONDUMPREFS"))
|
||||
_Py_PrintReferenceAddresses(stderr);
|
||||
#endif /* Py_TRACE_REFS */
|
||||
#ifdef PYMALLOC_DEBUG
|
||||
if (Py_GETENV("PYTHONMALLOCSTATS"))
|
||||
_PyObject_DebugMallocStats();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue