summaryrefslogtreecommitdiffstats
path: root/tcl8.6/doc/TCL_MEM_DEBUG.3
diff options
context:
space:
mode:
Diffstat (limited to 'tcl8.6/doc/TCL_MEM_DEBUG.3')
-rw-r--r--tcl8.6/doc/TCL_MEM_DEBUG.380
1 files changed, 0 insertions, 80 deletions
diff --git a/tcl8.6/doc/TCL_MEM_DEBUG.3 b/tcl8.6/doc/TCL_MEM_DEBUG.3
deleted file mode 100644
index e3a6809..0000000
--- a/tcl8.6/doc/TCL_MEM_DEBUG.3
+++ /dev/null
@@ -1,80 +0,0 @@
-'\"
-'\" Copyright (c) 1992-1999 Karl Lehenbauer and Mark Diekhans.
-'\" Copyright (c) 2000 by Scriptics Corporation.
-'\" All rights reserved.
-'\"
-.TH TCL_MEM_DEBUG 3 8.1 Tcl "Tcl Library Procedures"
-.so man.macros
-.BS
-.SH NAME
-TCL_MEM_DEBUG \- Compile-time flag to enable Tcl memory debugging
-.BE
-.SH DESCRIPTION
-When Tcl is compiled with \fBTCL_MEM_DEBUG\fR defined, a powerful set
-of memory debugging aids is included in the compiled binary. This
-includes C and Tcl functions which can aid with debugging
-memory leaks, memory allocation overruns, and other memory related
-errors.
-.SH "ENABLING MEMORY DEBUGGING"
-.PP
-To enable memory debugging, Tcl should be recompiled from scratch with
-\fBTCL_MEM_DEBUG\fR defined (e.g. by passing the
-\fI\-\-enable\-symbols=mem\fR flag to the \fIconfigure\fR script when
-building). This will also compile in a non-stub
-version of \fBTcl_InitMemory\fR to add the \fBmemory\fR command to Tcl.
-.PP
-\fBTCL_MEM_DEBUG\fR must be either left defined for all modules or undefined
-for all modules that are going to be linked together. If they are not, link
-errors will occur, with either \fBTcl_DbCkfree\fR and \fBTcl_DbCkalloc\fR or
-\fBTcl_Alloc\fR and \fBTcl_Free\fR being undefined.
-.PP
-Once memory debugging support has been compiled into Tcl, the C
-functions \fBTcl_ValidateAllMemory\fR, and \fBTcl_DumpActiveMemory\fR,
-and the Tcl \fBmemory\fR command can be used to validate and examine
-memory usage.
-.SH "GUARD ZONES"
-.PP
-When memory debugging is enabled, whenever a call to \fBckalloc\fR is
-made, slightly more memory than requested is allocated so the memory
-debugging code can keep track of the allocated memory, and eight-byte
-.QW "guard zones"
-are placed in front of and behind the space that will be
-returned to the caller. (The sizes of the guard zones are defined by the
-C #define \fBLOW_GUARD_SIZE\fR and #define \fBHIGH_GUARD_SIZE\fR
-in the file \fIgeneric/tclCkalloc.c\fR \(em it can
-be extended if you suspect large overwrite problems, at some cost in
-performance.) A known pattern is written into the guard zones and, on
-a call to \fBckfree\fR, the guard zones of the space being freed are
-checked to see if either zone has been modified in any way. If one
-has been, the guard bytes and their new contents are identified, and a
-.QW "low guard failed"
-or
-.QW "high guard failed"
-message is issued. The
-.QW "guard failed"
-message includes the address of the memory packet and
-the file name and line number of the code that called \fBckfree\fR.
-This allows you to detect the common sorts of one-off problems, where
-not enough space was allocated to contain the data written, for
-example.
-.SH "DEBUGGING DIFFICULT MEMORY CORRUPTION PROBLEMS"
-.PP
-Normally, Tcl compiled with memory debugging enabled will make it easy
-to isolate a corruption problem. Turning on memory validation with
-the memory command can help isolate difficult problems. If you
-suspect (or know) that corruption is occurring before the Tcl
-interpreter comes up far enough for you to issue commands, you can set
-\fBMEM_VALIDATE\fR define, recompile tclCkalloc.c and rebuild Tcl.
-This will enable memory validation from the first call to
-\fBckalloc\fR, again, at a large performance impact.
-.PP
-If you are desperate and validating memory on every call to
-\fBckalloc\fR and \fBckfree\fR is not enough, you can explicitly call
-\fBTcl_ValidateAllMemory\fR directly at any point. It takes a \fIchar
-*\fR and an \fIint\fR which are normally the filename and line number
-of the caller, but they can actually be anything you want. Remember
-to remove the calls after you find the problem.
-.SH "SEE ALSO"
-ckalloc, memory, Tcl_ValidateAllMemory, Tcl_DumpActiveMemory
-.SH KEYWORDS
-memory, debug