<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=SirFact_post_hoc_debugging</id>
	<title>SirFact post hoc debugging - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://m204wiki.rocketsoftware.com/index.php?action=history&amp;feed=atom&amp;title=SirFact_post_hoc_debugging"/>
	<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;action=history"/>
	<updated>2026-05-05T05:00:44Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.43.1</generator>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=103008&amp;oldid=prev</id>
		<title>JAL: typo</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=103008&amp;oldid=prev"/>
		<updated>2017-05-18T17:24:26Z</updated>

		<summary type="html">&lt;p&gt;typo&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;← Older 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 17:24, 18 May 2017&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-l71&quot;&gt;Line 71:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 71:&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;application at the time of an error is collected in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; dumps, under control of these commands.&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;application at the time of an error is collected in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; dumps, under control of these commands.&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;The data in these dumps can then be viewed using [[SirFact $functions]] or&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;The data in these dumps can then be viewed using [[SirFact $functions]] or&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;a ready-to-use application subsystem called [[SirFact FACT subsystem|FACT]]&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;a ready-to-use application subsystem called [[SirFact FACT subsystem|FACT]].&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;==Ad hoc versus post hoc debugging==&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;==Ad hoc versus post hoc debugging==&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JAL</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102808&amp;oldid=prev</id>
		<title>ELowell at 21:11, 24 April 2017</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102808&amp;oldid=prev"/>
		<updated>2017-04-24T21:11:57Z</updated>

		<summary type="html">&lt;p&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;← Older 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 21:11, 24 April 2017&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-l47&quot;&gt;Line 47:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 47:&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;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&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;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&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;&amp;lt;var&amp;gt;[[SIRFACT_command#SIRFACT_CANCEL|SIRFACT CANCEL]]&amp;lt;/var&amp;gt; command and the&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;&amp;lt;var&amp;gt;[[SIRFACT_command#SIRFACT_CANCEL|SIRFACT CANCEL]]&amp;lt;/var&amp;gt; command and the&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;&amp;lt;var&amp;gt;[[SirFact SOUL statements#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The_Assert_statement&lt;/del&gt;|Assert]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SirFact SOUL statements#&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;The_SirFact_statement&lt;/del&gt;|SirFact]]&amp;lt;/var&amp;gt; statements&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;&amp;lt;var&amp;gt;[[SirFact SOUL statements#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;Assert statement&lt;/ins&gt;|Assert]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SirFact SOUL statements#&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SirFact statement&lt;/ins&gt;|SirFact]]&amp;lt;/var&amp;gt; statements&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;to facilitate catching errors earlier rather than later.&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;to facilitate catching errors earlier rather than later.&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;/table&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102795&amp;oldid=prev</id>
		<title>ELowell: /* Post hoc debugging */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102795&amp;oldid=prev"/>
		<updated>2017-04-21T20:03:13Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Post hoc debugging&lt;/span&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;← Older 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 20:03, 21 April 2017&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-l121&quot;&gt;Line 121:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 121:&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;production or unit-test away from the view of a programmer.&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;production or unit-test away from the view of a programmer.&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;Instead, a different debugging tool is needed for these kinds of problems:&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;Instead, a different debugging tool is needed for these kinds of problems:&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;a &amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;b&lt;/del&gt;&amp;gt;post hoc&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;b&lt;/del&gt;&amp;gt; debugging tool.&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 &amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var class=&quot;term&quot;&lt;/ins&gt;&amp;gt;post hoc&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var&lt;/ins&gt;&amp;gt; debugging tool.&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;A post hoc debugging tool is useful in solving problems that occur outside of development because:&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;A post hoc debugging tool is useful in solving problems that occur outside of development because:&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;&amp;lt;ul&amp;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;&amp;lt;ul&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102793&amp;oldid=prev</id>
		<title>ELowell: /* Ad hoc debugging */</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=102793&amp;oldid=prev"/>
		<updated>2017-04-21T20:01:12Z</updated>

		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Ad hoc debugging&lt;/span&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;← Older 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 20:01, 21 April 2017&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-l90&quot;&gt;Line 90:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 90:&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;Because of the interactive nature of these&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;Because of the interactive nature of these&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;types of debugging tools, they are sometimes referred to as &amp;lt;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;b&lt;/del&gt;&amp;gt;ad hoc&amp;lt;/&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;b&lt;/del&gt;&amp;gt; debugging tools.&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;types of debugging tools, they are sometimes referred to as &amp;lt;&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var class=&quot;term&quot;&lt;/ins&gt;&amp;gt;ad hoc&amp;lt;/&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;var&lt;/ins&gt;&amp;gt; debugging tools.&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;The Rocket Model 204 &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|Janus Debugger]]&amp;lt;/var&amp;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;The Rocket Model 204 &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|Janus Debugger]]&amp;lt;/var&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;div&gt;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|TN/3270 Debugger]]&amp;lt;/var&amp;gt;, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Introduction to SoftSpy|SoftSpy]]&amp;lt;/var&amp;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;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|TN/3270 Debugger]]&amp;lt;/var&amp;gt;, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Introduction to SoftSpy|SoftSpy]]&amp;lt;/var&amp;gt;  &lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>ELowell</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83241&amp;oldid=prev</id>
		<title>JAL: link repair</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83241&amp;oldid=prev"/>
		<updated>2016-03-14T15:39:08Z</updated>

		<summary type="html">&lt;p&gt;link repair&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;← Older 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 15:39, 14 March 2016&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-l64&quot;&gt;Line 64:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 64:&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;from which the subscript was derived, and so on.&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;from which the subscript was derived, and so on.&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;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&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;&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&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;&amp;lt;var&amp;gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;System &lt;/del&gt;parameters#factprm|SIRFACT]]&amp;lt;/var&amp;gt; system parameter and the&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;&amp;lt;var&amp;gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SirFact system &lt;/ins&gt;parameters#factprm|SIRFACT]]&amp;lt;/var&amp;gt; system parameter and the&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;&amp;lt;var&amp;gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIRFACT_command&lt;/del&gt;#SIRFACT_MAXDUMP|SIRFACT MAXDUMP]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIRFACT_command&lt;/del&gt;#SIRFACT_DUMP|SIRFACT DUMP]]&amp;lt;/var&amp;gt; commands  &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;&amp;lt;var&amp;gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIRFACT command&lt;/ins&gt;#SIRFACT_MAXDUMP|SIRFACT MAXDUMP]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;SIRFACT command&lt;/ins&gt;#SIRFACT_DUMP|SIRFACT DUMP]]&amp;lt;/var&amp;gt; commands  &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;to collect as much information about application errors as possible.&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;to collect as much information about application errors as possible.&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;/table&gt;</summary>
		<author><name>JAL</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83022&amp;oldid=prev</id>
		<title>Admin: 1 revision: not all SirFact pages</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83022&amp;oldid=prev"/>
		<updated>2016-03-02T00:35:41Z</updated>

		<summary type="html">&lt;p&gt;1 revision: not all SirFact pages&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;en&quot;&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;1&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 00:35, 2 March 2016&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-notice&quot; lang=&quot;en&quot;&gt;&lt;div class=&quot;mw-diff-empty&quot;&gt;(No difference)&lt;/div&gt;
&lt;/td&gt;&lt;/tr&gt;&lt;/table&gt;</summary>
		<author><name>Admin</name></author>
	</entry>
	<entry>
		<id>https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83021&amp;oldid=prev</id>
		<title>JAL: misc formatting</title>
		<link rel="alternate" type="text/html" href="https://m204wiki.rocketsoftware.com/index.php?title=SirFact_post_hoc_debugging&amp;diff=83021&amp;oldid=prev"/>
		<updated>2016-03-01T20:24:03Z</updated>

		<summary type="html">&lt;p&gt;misc formatting&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;==Model 204 debugging==&lt;br /&gt;
Software errors are typically referred to as bugs, and removing errors from&lt;br /&gt;
software is called debugging.&lt;br /&gt;
A bug is typically a problem with software that results in a display of incorrect&lt;br /&gt;
data to the end-user or a problem that causes premature termination of a program.&lt;br /&gt;
There is also a class of bugs that can cause poor software performance.&lt;br /&gt;
In any case, if uncorrected, most bugs are ultimately noticed by&lt;br /&gt;
end-users as incorrect data, abnormal termination of a system, or poor performance.&lt;br /&gt;
&lt;br /&gt;
Debugging essentially consists of three steps:&lt;br /&gt;
&amp;lt;ol&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Determining an error has occurred.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Determining the cause of the error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Correcting the cause of the error.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
The last item is essentially a programming task, so it is&lt;br /&gt;
essentially beyond the scope of debugging tools (and probably&lt;br /&gt;
any other kinds of tools).&lt;br /&gt;
Understanding the reason something is an error, the logic flaws that caused the error, and how the&lt;br /&gt;
logic needs to be corrected require &amp;lt;b&amp;gt;understanding&amp;lt;/b&amp;gt;,&lt;br /&gt;
so they are essentially human activities.&lt;br /&gt;
It is not likely this&lt;br /&gt;
process can be significantly improved by automation any time in the near future.&lt;br /&gt;
&lt;br /&gt;
One might also consider managing and distributing the fixes to&lt;br /&gt;
errors to be part of the debugging process.&lt;br /&gt;
Whether or not this is accurate, fix management and distribution are different enough in&lt;br /&gt;
their nature that they are rarely handled by debugging facilities. They&lt;br /&gt;
are more typically handled by change control facilities, such as &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirLib&amp;lt;/var&amp;gt;,&lt;br /&gt;
which is available for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
===Detect errors early===&lt;br /&gt;
Software logic errors can cause immediately noticed problems, or they&lt;br /&gt;
can cause errors long after the original logic error.&lt;br /&gt;
For example, a bug in a piece of code might cause a global to be incorrectly set.&lt;br /&gt;
This incorrectly-set global might cause another piece of code to store&lt;br /&gt;
some invalid data in the database. Months later, that data might be loaded&lt;br /&gt;
by a different piece of code which then might terminate abnormally because&lt;br /&gt;
of the invalid data, or it might display incorrect data on the end-user&amp;#039;s screen.&lt;br /&gt;
Clearly, in this sort of situation, especially if the incorrect data&lt;br /&gt;
might have been stored by any one of dozens of procedures, determining&lt;br /&gt;
the cause of the problem can be very difficult.&lt;br /&gt;
&lt;br /&gt;
The further from the original logic error one catches the error, the more difficult it is to determine the cause of the error.&lt;br /&gt;
Because of this, one of the goals of debugging&lt;br /&gt;
is to catch errors as early as possible.&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&lt;br /&gt;
&amp;lt;var&amp;gt;[[SIRFACT_command#SIRFACT_CANCEL|SIRFACT CANCEL]]&amp;lt;/var&amp;gt; command and the&lt;br /&gt;
&amp;lt;var&amp;gt;[[SirFact SOUL statements#The_Assert_statement|Assert]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SirFact SOUL statements#The_SirFact_statement|SirFact]]&amp;lt;/var&amp;gt; statements&lt;br /&gt;
to facilitate catching errors earlier rather than later.&lt;br /&gt;
&lt;br /&gt;
===Gather abundant error information===&lt;br /&gt;
A second goal of debugging is to collect as much information as&lt;br /&gt;
possible when an error occurs.&lt;br /&gt;
A classic example of the antithesis&lt;br /&gt;
of this is the &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; message &amp;lt;code&amp;gt;M204.0553 SUBSCRIPT RANGE ERROR&amp;lt;/code&amp;gt;.&lt;br /&gt;
This message causes request cancellation but provides&lt;br /&gt;
virtually no information as to the cause of the problem.&lt;br /&gt;
Until recently, this message didn&amp;#039;t even include the name of the array&lt;br /&gt;
to which the invalid subscript applied.&lt;br /&gt;
Nevertheless, there are still many key pieces of information missing,&lt;br /&gt;
such as the line of code the error occurred on, the value of&lt;br /&gt;
the array&amp;#039;s subscript, the values of other variables or fields&lt;br /&gt;
from which the subscript was derived, and so on.&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; provides the&lt;br /&gt;
&amp;lt;var&amp;gt;[[System parameters#factprm|SIRFACT]]&amp;lt;/var&amp;gt; system parameter and the&lt;br /&gt;
&amp;lt;var&amp;gt;[[SIRFACT_command#SIRFACT_MAXDUMP|SIRFACT MAXDUMP]]&amp;lt;/var&amp;gt; and &amp;lt;var&amp;gt;[[SIRFACT_command#SIRFACT_DUMP|SIRFACT DUMP]]&amp;lt;/var&amp;gt; commands &lt;br /&gt;
to collect as much information about application errors as possible.&lt;br /&gt;
&lt;br /&gt;
A tremendous amount of information about the&lt;br /&gt;
application at the time of an error is collected in &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt; dumps, under control of these commands.&lt;br /&gt;
The data in these dumps can then be viewed using [[SirFact $functions]] or&lt;br /&gt;
a ready-to-use application subsystem called [[SirFact FACT subsystem|FACT]]).&lt;br /&gt;
&lt;br /&gt;
==Ad hoc versus post hoc debugging==&lt;br /&gt;
&lt;br /&gt;
===Ad hoc debugging===&lt;br /&gt;
When most people think of debugging tools, they think of tools used&lt;br /&gt;
by a programmer during the development process or perhaps when a&lt;br /&gt;
programmer is trying to reproduce in a test environment a problem that&lt;br /&gt;
occurred in a production environment.&lt;br /&gt;
These types of tools are typically&lt;br /&gt;
interactive and allow things like setting of breakpoints, examination&lt;br /&gt;
and &amp;quot;manual&amp;quot; modification of values of variables, and tracing of code paths.&lt;br /&gt;
Because the user of such interactive debugging tools&lt;br /&gt;
must be familiar with the code being debugged, and because an application&lt;br /&gt;
being debugged by such a tool must run &amp;quot;inside&amp;quot; the debugging&lt;br /&gt;
environment, these tools are generally only useful when a programmer&lt;br /&gt;
is running the application.&lt;br /&gt;
&lt;br /&gt;
Because of the interactive nature of these&lt;br /&gt;
types of debugging tools, they are sometimes referred to as &amp;lt;b&amp;gt;ad hoc&amp;lt;/b&amp;gt; debugging tools.&lt;br /&gt;
The Rocket Model 204 &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|Janus Debugger]]&amp;lt;/var&amp;gt;,&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Debugger|TN/3270 Debugger]]&amp;lt;/var&amp;gt;, and &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;[[Introduction to SoftSpy|SoftSpy]]&amp;lt;/var&amp;gt; &lt;br /&gt;
are accomplished ad hoc debugging tools available for &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
As desirable as it is to catch all errors during the development&lt;br /&gt;
process, this is simply not possible:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;All but the simplest code has&lt;br /&gt;
just too many possible combinations of user and external inputs, database&lt;br /&gt;
values, and environmental variables for all possible combinations to be tested.&lt;br /&gt;
Often a bug can only be induced by specific combinations of all these variables.&lt;br /&gt;
Because of this complexity, bugs can and will be detected&lt;br /&gt;
without a programmer present and so outside the environment of an ad hoc debugger.&lt;br /&gt;
Even worse, some of these bugs will not be reproducible&lt;br /&gt;
in a test environment so that a programmer could use an ad hoc debugger&lt;br /&gt;
to attack the problem. &amp;lt;/li&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&amp;lt;li&amp;gt;Very often, a user will not remember the exact sequence of inputs they&lt;br /&gt;
entered to cause an error, or perhaps the error was caused by a combination&lt;br /&gt;
of user inputs and environmental problems beyond the view of the user.&lt;br /&gt;
Often, the combination of factors that caused a bug will not be understood&lt;br /&gt;
until the actual cause of the bug is understood.&lt;br /&gt;
Occasionally, with timing related bugs, even understanding all the factors required to cause a bug to&lt;br /&gt;
happen might not be sufficient to consistently reproduce the problem. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
&lt;br /&gt;
===Post hoc debugging===&lt;br /&gt;
Ad hoc debuggers are basically useless for problems that occur in&lt;br /&gt;
production or unit-test away from the view of a programmer.&lt;br /&gt;
Instead, a different debugging tool is needed for these kinds of problems:&lt;br /&gt;
a &amp;lt;b&amp;gt;post hoc&amp;lt;/b&amp;gt; debugging tool.&lt;br /&gt;
A post hoc debugging tool is useful in solving problems that occur outside of development because:&lt;br /&gt;
&amp;lt;ul&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It contains facilities to trap errors earlier rather than later. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;It collects and stores as much information as possible at the time of an error. &amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ul&amp;gt;&lt;br /&gt;
The only real well-defeloped post hoc debugging tool available in the&lt;br /&gt;
&amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;Model&amp;amp;nbsp;204&amp;lt;/var&amp;gt; environment is &amp;lt;var class=&amp;quot;product&amp;quot;&amp;gt;SirFact&amp;lt;/var&amp;gt;.&lt;br /&gt;
&lt;br /&gt;
Even in the later stages of development, a post hoc debugging facility&lt;br /&gt;
might be preferable to an ad hoc debugger.&lt;br /&gt;
This is because a programmer&lt;br /&gt;
might wish to quickly go through many code paths without an&lt;br /&gt;
intrusive ad hoc debugger in the way.&lt;br /&gt;
Because they run in production&lt;br /&gt;
systems, post hoc debugging tools must be extremely unobtrusive.&lt;br /&gt;
In any case, a programmer might be willing to pay a&lt;br /&gt;
price in getting slightly less interactive debugging capabilities&lt;br /&gt;
for the benefit of having the debugger &amp;quot;out of the way&amp;quot; most of the time.&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
{{Template: SirFact topic list}}&lt;br /&gt;
&lt;br /&gt;
[[Category: SirFact]]&lt;/div&gt;</summary>
		<author><name>JAL</name></author>
	</entry>
</feed>