<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Memory_debugger</id>
	<title>Memory debugger - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://debianws.lexgopc.com/wiki143/index.php?action=history&amp;feed=atom&amp;title=Memory_debugger"/>
	<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;action=history"/>
	<updated>2026-05-04T22:05:58Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=1702071&amp;oldid=prev</id>
		<title>imported&gt;Explicit: Removing link(s) undefined (XFDcloser)</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=1702071&amp;oldid=prev"/>
		<updated>2025-06-30T14:11:30Z</updated>

		<summary type="html">&lt;p&gt;Removing link(s) &lt;a href=&quot;/wiki143/index.php?title=Undefined&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;Undefined (page does not exist)&quot;&gt;undefined&lt;/a&gt; (&lt;a href=&quot;/wiki143/index.php?title=WP:XFDC&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:XFDC (page does not exist)&quot;&gt;XFDcloser&lt;/a&gt;)&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 14:11, 30 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l116&quot;&gt;Line 116:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 116:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Runtime&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Runtime&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;|-&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;[[&lt;/del&gt;libcwd&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;]]&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| libcwd&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Linux (gcc)&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Linux (gcc)&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Free/open source&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;| Free/open source&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Explicit</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=737200&amp;oldid=prev</id>
		<title>imported&gt;Neils51: replaced: it&#039;s → its, typo(s) fixed: time consuming → time-consuming</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=737200&amp;oldid=prev"/>
		<updated>2025-06-03T12:51:22Z</updated>

		<summary type="html">&lt;p&gt;replaced: it&amp;#039;s → its, &lt;a href=&quot;/wiki143/index.php?title=WP:AWB/T&amp;amp;action=edit&amp;amp;redlink=1&quot; class=&quot;new&quot; title=&quot;WP:AWB/T (page does not exist)&quot;&gt;typo(s) fixed&lt;/a&gt;: time consuming → time-consuming&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Previous revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 12:51, 3 June 2025&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l3&quot;&gt;Line 3:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 3:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Program execution}}&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;{{Program execution}}&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A &#039;&#039;&#039;memory debugger&#039;&#039;&#039; is a [[debugger]] for finding software memory problems such as [[memory leak]]s and [[buffer overflow]]s. &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt; &lt;/del&gt;These are due to [[Software bug|bugs]] related to the allocation and deallocation of [[dynamic memory]]. Programs written in languages that have [[Garbage collection (computer science)|garbage collection]], such as [[managed code]], might also need memory debuggers, e.g. for memory leaks due to &quot;living&quot; references in collections.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;A &#039;&#039;&#039;memory debugger&#039;&#039;&#039; is a [[debugger]] for finding software memory problems such as [[memory leak]]s and [[buffer overflow]]s. These are due to [[Software bug|bugs]] related to the allocation and deallocation of [[dynamic memory]]. Programs written in languages that have [[Garbage collection (computer science)|garbage collection]], such as [[managed code]], might also need memory debuggers, e.g. for memory leaks due to &quot;living&quot; references in collections.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Overview==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Overview==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory debuggers work by monitoring memory access, allocations, and deallocation of memory. Many memory debuggers require applications to be recompiled with special dynamic memory allocation libraries, whose APIs are mostly compatible with conventional dynamic memory allocation libraries, or else use dynamic linking. [[Electric Fence]] is such a debugger which debugs memory allocation with [[malloc]]. Some memory debuggers (e.g. [[Valgrind]]) work by running the executable in a virtual machine-like environment, monitoring memory access, allocation and deallocation so that no recompilation with special memory allocation libraries is required.&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Memory debuggers work by monitoring memory access, allocations, and deallocation of memory. Many memory debuggers require applications to be recompiled with special dynamic memory allocation libraries, whose APIs are mostly compatible with conventional dynamic memory allocation libraries, or else use dynamic linking. [[Electric Fence]] is such a debugger which debugs memory allocation with [[malloc]]. Some memory debuggers (e.g. [[Valgrind]]) work by running the executable in a virtual machine-like environment, monitoring memory access, allocation and deallocation so that no recompilation with special memory allocation libraries is required.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Finding memory issues such as leaks can be extremely time consuming as they may not manifest themselves except under certain conditions. Using a tool to detect memory misuse makes the process much faster and easier.&amp;lt;ref&amp;gt;{{cite web|url=http://www.computerworld.com/article/3003957/linux/review-5-memory-debuggers-for-linux-coding.html|access-date=August 24, 2017|title=Review: 5 memory debuggers for Linux coding|date=20 November 2015}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Finding memory issues such as leaks can be extremely time&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;-&lt;/ins&gt;consuming as they may not manifest themselves except under certain conditions. Using a tool to detect memory misuse makes the process much faster and easier.&amp;lt;ref&amp;gt;{{cite web|url=http://www.computerworld.com/article/3003957/linux/review-5-memory-debuggers-for-linux-coding.html|access-date=August 24, 2017|title=Review: 5 memory debuggers for Linux coding|date=20 November 2015}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As abnormally high memory utilization can be a contributing factor in [[software aging]], memory debuggers can help programmers to avoid [[software anomaly|software anomalies]] that would exhaust the computer system memory, thus ensuring high reliability of the software even for long [[run time (program lifecycle phase)|runtimes]].&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;As abnormally high memory utilization can be a contributing factor in [[software aging]], memory debuggers can help programmers to avoid [[software anomaly|software anomalies]] that would exhaust the computer system memory, thus ensuring high reliability of the software even for long [[run time (program lifecycle phase)|runtimes]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Comparison to static analyzer==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==Comparison to static analyzer==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some [[List of tools for static code analysis|static analysis tools]] can also help find memory errors. Memory debuggers operate as part of an application while &lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;it&#039;s &lt;/del&gt;[[Execution (computing)|running]] while [[static code analysis]] is performed by analyzing the code without executing it. These different techniques will typically find different instances of problems, and using them both together yields the best result.&amp;lt;ref&amp;gt;{{cite web|url=https://software.intel.com/en-us/inspector-user-guide-windows-dynamic-analysis-vs-static-analysis|access-date=August 24, 2017|title=Dynamic Analysis vs. Static Analysis}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;Some [[List of tools for static code analysis|static analysis tools]] can also help find memory errors. Memory debuggers operate as part of an application while &lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;its &lt;/ins&gt;[[Execution (computing)|running]] while [[static code analysis]] is performed by analyzing the code without executing it. These different techniques will typically find different instances of problems, and using them both together yields the best result.&amp;lt;ref&amp;gt;{{cite web|url=https://software.intel.com/en-us/inspector-user-guide-windows-dynamic-analysis-vs-static-analysis|access-date=August 24, 2017|title=Dynamic Analysis vs. Static Analysis}}&amp;lt;/ref&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==List of memory debugging tools==&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;==List of memory debugging tools==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>imported&gt;Neils51</name></author>
	</entry>
	<entry>
		<id>http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=268277&amp;oldid=prev</id>
		<title>2A01:CB15:8545:7700:62CF:84FF:FE81:CAEC: Add FreeBSD and Solaris/illumos to Valgrind platforms</title>
		<link rel="alternate" type="text/html" href="http://debianws.lexgopc.com/wiki143/index.php?title=Memory_debugger&amp;diff=268277&amp;oldid=prev"/>
		<updated>2025-05-28T07:01:42Z</updated>

		<summary type="html">&lt;p&gt;Add FreeBSD and Solaris/illumos to Valgrind platforms&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Short description|Software memory problem finder}}&lt;br /&gt;
{{more citations needed|date=December 2011}}&lt;br /&gt;
{{Program execution}}&lt;br /&gt;
&lt;br /&gt;
A &amp;#039;&amp;#039;&amp;#039;memory debugger&amp;#039;&amp;#039;&amp;#039; is a [[debugger]] for finding software memory problems such as [[memory leak]]s and [[buffer overflow]]s.  These are due to [[Software bug|bugs]] related to the allocation and deallocation of [[dynamic memory]]. Programs written in languages that have [[Garbage collection (computer science)|garbage collection]], such as [[managed code]], might also need memory debuggers, e.g. for memory leaks due to &amp;quot;living&amp;quot; references in collections.&lt;br /&gt;
&lt;br /&gt;
==Overview==&lt;br /&gt;
Memory debuggers work by monitoring memory access, allocations, and deallocation of memory. Many memory debuggers require applications to be recompiled with special dynamic memory allocation libraries, whose APIs are mostly compatible with conventional dynamic memory allocation libraries, or else use dynamic linking. [[Electric Fence]] is such a debugger which debugs memory allocation with [[malloc]]. Some memory debuggers (e.g. [[Valgrind]]) work by running the executable in a virtual machine-like environment, monitoring memory access, allocation and deallocation so that no recompilation with special memory allocation libraries is required.&lt;br /&gt;
&lt;br /&gt;
Finding memory issues such as leaks can be extremely time consuming as they may not manifest themselves except under certain conditions. Using a tool to detect memory misuse makes the process much faster and easier.&amp;lt;ref&amp;gt;{{cite web|url=http://www.computerworld.com/article/3003957/linux/review-5-memory-debuggers-for-linux-coding.html|access-date=August 24, 2017|title=Review: 5 memory debuggers for Linux coding|date=20 November 2015}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
As abnormally high memory utilization can be a contributing factor in [[software aging]], memory debuggers can help programmers to avoid [[software anomaly|software anomalies]] that would exhaust the computer system memory, thus ensuring high reliability of the software even for long [[run time (program lifecycle phase)|runtimes]].&lt;br /&gt;
&lt;br /&gt;
==Comparison to static analyzer==&lt;br /&gt;
Some [[List of tools for static code analysis|static analysis tools]] can also help find memory errors. Memory debuggers operate as part of an application while it&amp;#039;s [[Execution (computing)|running]] while [[static code analysis]] is performed by analyzing the code without executing it. These different techniques will typically find different instances of problems, and using them both together yields the best result.&amp;lt;ref&amp;gt;{{cite web|url=https://software.intel.com/en-us/inspector-user-guide-windows-dynamic-analysis-vs-static-analysis|access-date=August 24, 2017|title=Dynamic Analysis vs. Static Analysis}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==List of memory debugging tools==&lt;br /&gt;
This is a list of [[Programming tool|tools]] useful for memory debugging. A [[profiling (computer programming)|profiler]] can be used in conjunction with a memory debugger.&lt;br /&gt;
&lt;br /&gt;
{|class=&amp;quot;wikitable sortable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
!Name&lt;br /&gt;
!OS&lt;br /&gt;
!License&lt;br /&gt;
!Languages&lt;br /&gt;
!Technique&lt;br /&gt;
|-&lt;br /&gt;
| [[AddressSanitizer]]&lt;br /&gt;
| Linux, Mac OS&lt;br /&gt;
| Free/open source (LLVM)&lt;br /&gt;
| C, C++, Rust&lt;br /&gt;
| Compile-time instrumentation (available in [[Clang]] and [[GNU Compiler Collection|GCC]]) and specialized library&lt;br /&gt;
|-&lt;br /&gt;
| [[Allinea Distributed Debugging Tool|Allinea DDT]]&lt;br /&gt;
| Linux, Blue Gene&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C, C++ and F90. Also for parallel programs on supercomputers&lt;br /&gt;
| Runtime - through dynamic linking&lt;br /&gt;
|-&lt;br /&gt;
| [[AQtime]]&lt;br /&gt;
| Windows (Visual Studio, Embarcadero IDEs)&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| .NET, C++, Java, Silverlight, JScript, VBScript&amp;lt;ref&amp;gt;{{Cite web |url=http://smartbear.com/products/qa-tools/application-performance-profiling/profiling-managed-code |title=Managed Code - AQtime Pro &amp;amp;#124; SmartBear |access-date=2013-01-14 |archive-url=https://web.archive.org/web/20130919153515/http://smartbear.com/products/qa-tools/application-performance-profiling/profiling-managed-code |archive-date=2013-09-19 |url-status=dead }}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Runtime&lt;br /&gt;
|-&lt;br /&gt;
| [[Bcheck]]&lt;br /&gt;
| Solaris&lt;br /&gt;
|&lt;br /&gt;
|&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[BoundsChecker]]&lt;br /&gt;
| Windows (Visual Studio)&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C++&lt;br /&gt;
| Runtime intercepts or compile-time&lt;br /&gt;
|-&lt;br /&gt;
| [[Daikon (system)|Daikon]]&lt;br /&gt;
| Unix, Windows, Mac OS X&amp;lt;ref name=&amp;quot;diakon_manual&amp;quot;&amp;gt;{{Cite web|url=http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html|title=The Daikon Invariant Detector User Manual}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Free/open source&amp;lt;ref&amp;gt;{{Cite web|url=http://groups.csail.mit.edu/pag/daikon/download/doc/daikon.html#License|title = The Daikon Invariant Detector User Manual}}&amp;lt;/ref&amp;gt;&lt;br /&gt;
| Java, C/C++, Perl, and Eiffel&amp;lt;ref name=&amp;quot;diakon_manual&amp;quot; /&amp;gt;&lt;br /&gt;
| Runtime dynamic invariant detection&lt;br /&gt;
|-&lt;br /&gt;
| [[Debug_new]]&lt;br /&gt;
| (general technique)&lt;br /&gt;
| (general technique)&lt;br /&gt;
| C++&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[Deleaker]]&lt;br /&gt;
| Windows (standalone, and plugins for Visual Studio, RAD Studio, Qt Creator, CLion)&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C++, .Net, Delphi&lt;br /&gt;
| Runtime intercepts&lt;br /&gt;
|-&lt;br /&gt;
| [[dmalloc]]&lt;br /&gt;
| {{Any}}&lt;br /&gt;
| Free/open source ([[ISC License]])&lt;br /&gt;
| C&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| {{section link|DynamoRIO|Dr. Memory}}&lt;br /&gt;
| Android, Linux, Windows&lt;br /&gt;
| Free/open source (LGPL and BSD)&lt;br /&gt;
| {{Any}}&lt;br /&gt;
| Runtime intercepts&lt;br /&gt;
|-&lt;br /&gt;
| [[Electric Fence]]&lt;br /&gt;
| Unix&lt;br /&gt;
| {{GPL-lic|Free/open source (GPL)}}&lt;br /&gt;
| C, C++&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[FASTMM4]]&lt;br /&gt;
| Windows&lt;br /&gt;
| {{GPL-lic|Free/open source (GPL)}}&lt;br /&gt;
| Delphi&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[IBM Rational Purify]]&lt;br /&gt;
| Unix, Windows&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C++, Java, .NET&lt;br /&gt;
| Runtime&lt;br /&gt;
|-&lt;br /&gt;
| [[Insure++]]&lt;br /&gt;
| Windows (Visual Studio plugin), Unix&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C, C++&lt;br /&gt;
| source code instrumentation&lt;br /&gt;
|-&lt;br /&gt;
| [[Intel Inspector]]&lt;br /&gt;
| Windows (Visual Studio), Linux&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C, C++, Fortran&lt;br /&gt;
| Runtime&lt;br /&gt;
|-&lt;br /&gt;
| [[libcwd]]&lt;br /&gt;
| Linux (gcc)&lt;br /&gt;
| Free/open source&lt;br /&gt;
| C, C++&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[libumem]]&lt;br /&gt;
| Solaris&lt;br /&gt;
| Bundled with Solaris&lt;br /&gt;
| &lt;br /&gt;
| Link-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[Memwatch]]&lt;br /&gt;
| {{Any}} (programming library)&lt;br /&gt;
| Free/open source&lt;br /&gt;
| C&lt;br /&gt;
| Compile-time override&lt;br /&gt;
|-&lt;br /&gt;
| [[mtrace]]&lt;br /&gt;
| {{varies|Various}}&lt;br /&gt;
| {{LGPL-lic|Free/open source (LGPL)}}&lt;br /&gt;
| GNU C library&lt;br /&gt;
| Built-in, outputs accesses&lt;br /&gt;
|-&lt;br /&gt;
| [[MTuner]]&lt;br /&gt;
| {{varies|Various}}&lt;br /&gt;
| {{Free}}&lt;br /&gt;
| C, C++&lt;br /&gt;
| Runtime intercepts, Link-time override (MSVC, Clang and GCC), Leak detection&lt;br /&gt;
|-&lt;br /&gt;
| [[Oracle Solaris Studio]] (formerly Sun Studio Runtime Checking)&lt;br /&gt;
| Linux, Solaris&lt;br /&gt;
| Proprietary freeware&lt;br /&gt;
| C, C++, Fortran&lt;br /&gt;
| &lt;br /&gt;
|-&lt;br /&gt;
| [[OLIVER]] (APT international)&lt;br /&gt;
| MVS, MVS/EXA, DOS/VSE&lt;br /&gt;
| {{Proprietary}} software&lt;br /&gt;
| IBM Assembler&lt;br /&gt;
| Runtime intercepts, Hypervisor - Type 2&lt;br /&gt;
|-&lt;br /&gt;
| [[Rogue Wave Software|TotalView]]&lt;br /&gt;
| Unix, Mac OS X&lt;br /&gt;
| {{Proprietary}} commercial&lt;br /&gt;
| C, C++, Fortran&lt;br /&gt;
| Runtime&lt;br /&gt;
|-&lt;br /&gt;
| {{section link|Valgrind|Memcheck}}&lt;br /&gt;
| Linux, FreeBSD, Solaris/illumos, Mac OS, Android&lt;br /&gt;
| {{GPL-lic|Free/open source (GPL)}}&lt;br /&gt;
| {{Any}}&lt;br /&gt;
| Runtime intercepts&lt;br /&gt;
|-&lt;br /&gt;
| [[WinDbg]]&lt;br /&gt;
| Windows&lt;br /&gt;
| {{Proprietary}} freeware&lt;br /&gt;
| C, C++, .NET, Python&lt;br /&gt;
| Runtime&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
&lt;br /&gt;
*[[Profiling (computer programming)]]&lt;br /&gt;
*[[List of performance analysis tools]]&lt;br /&gt;
*[[Debugger]]&lt;br /&gt;
*[[Runtime error detection]]&lt;br /&gt;
*[[Software testing]]&lt;br /&gt;
*[[Software engineering]]&lt;br /&gt;
*[[Computer programming]]&lt;br /&gt;
*[[Core dump]]&lt;br /&gt;
&lt;br /&gt;
==References==&lt;br /&gt;
*Michael C. Daconta: &amp;lt;cite&amp;gt;C++ Pointers and Dynamic Memory Management&amp;lt;/cite&amp;gt;, John Wiley &amp;amp; Sons, {{ISBN|0-471-04998-0}}&lt;br /&gt;
*[[Andrew Koenig (programmer)|Andrew Koenig]]: &amp;lt;cite&amp;gt;C Traps and Pitfalls&amp;lt;/cite&amp;gt;, Addison-Wesley, {{ISBN|0-201-17928-8}}&lt;br /&gt;
{{Reflist}}&lt;br /&gt;
&lt;br /&gt;
==External links==&lt;br /&gt;
*&amp;quot;[http://www.edm2.com/0508/membug.html Hunting Memory Bugs]&amp;quot; by Ivan Skytte Jørgensen&lt;br /&gt;
*&amp;quot;[https://web.archive.org/web/20071212210815/http://www.cs.utexas.edu/users/jpmartin/memCheckers.html Comparison of Free Memory Checkers]&amp;quot; by Jean-Philippe Martin {{Full citation needed|date=September 2009}}&lt;br /&gt;
&lt;br /&gt;
{{Memory management navbox}}&lt;br /&gt;
&lt;br /&gt;
[[Category:Memory management software]]&lt;br /&gt;
[[Category:Debugging]]&lt;/div&gt;</summary>
		<author><name>2A01:CB15:8545:7700:62CF:84FF:FE81:CAEC</name></author>
	</entry>
</feed>