-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathindex.html
170 lines (152 loc) · 9.76 KB
/
index.html
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<!DOCTYPE html>
<html lang="en_us">
<head>
<title>Debugger, Almost</title>
<meta charset="utf-8" />
<meta name="generator" content="Pelican" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<link rel="stylesheet" href="/static/css/main.css" />
<link rel="stylesheet" href="/static/css/theme.css" />
<link rel="icon" href="/images/yazani/yazani_1_extracted_bg_big_eyes_cropped.png" type="image/png" />
<link rel="apple-touch-icon" href="/images/yazani/yazani_1_extracted_bg_big_eyes_cropped.png" type="image/png" />
<script src="/static/misc.js"></script>
<script src="/blog/banner_image.js"></script>
<meta name="tags" content="programming, phoo, javascript" />
<meta property="og:site_name" content="dragoncoder047’s blog" />
<meta property="og:title" content="Debugger, Almost" />
<meta property="og:description" content="Today I started work on the Phoo debugger. As-is, it is very simple – I already programmed in a “tick” function into Phoo that gets called every item, and so my debugger only needs to patch itself into this function. However, the three buttons – “Into”, “Over”, and “Out” – caused me some …" />
<meta property="og:image" content="/images/yazani/yazani_1_extracted_bg.png" />
<meta property="og:type" content="article" />
<meta property="og:url" content="https://dragoncoder047.github.io/blog/2022/debugger-almost" />
<meta property="og:locale" content="['']" />
<meta name="twitter:card" content="summary_large_image" />
<meta name="twitter:title" content="dragoncoder047’s blog - Debugger, Almost" />
<meta name="twitter:description" content="Today I started work on the Phoo debugger. As-is, it is very simple – I already programmed in a “tick” function into Phoo that gets called every item, and so my debugger only needs to patch itself into this function. However, the three buttons – “Into”, “Over”, and “Out” – caused me some …" />
<meta name="twitter:image" content="/images/yazani/yazani_1_extracted_bg.png" />
</head>
<body class="match-braces rainbow-braces">
<header>
<a href="https://dragoncoder047.github.io/blog" class="flex-row"><div class="flex-row"><img src="/images/yazani/yazani_1_extracted_bg.png" style="max-height:10em" id="banner-image" /><div id="sitename-text"><h1>dragoncoder047’s blog</h1><h2>random thoughts about nonrandom things</h2></div></div></a>
<nav>
<ul>
<li><a href="https://dragoncoder047.github.io/blog/">Home</a></li>
<li><a href="https://dragoncoder047.github.io/blog/archives">Archives</a>
</li>
<li><a href="https://dragoncoder047.github.io/blog/tags">By tag</a>
</li>
<li><a href="/">Site root</a>
</li>
<li><a href="#">Projects</a>
<ul>
<li><a href="https://dragoncoder047.github.io/thuepaste">Thuepaste</a>
</li>
<li><a href="https://dragoncoder047.github.io/armdroid">Armdroid</a>
</li>
<li><a href="https://dragoncoder047.github.io/langton-music">Langton's Ant Music</a>
</li>
<li><a href="https://dragoncoder047.github.io/schemascii">Schemascii</a>
</li>
<li><a href="https://dragoncoder047.github.io/parasite">Parasite</a>
</li>
</ul>
</li>
<li>
<form action="https://www.google.com/search" method="GET">
<input name="q" type="search" placeholder="Search"></input>
<input type="hidden" name="as_sitesearch" value="https://dragoncoder047.github.io/blog"></input>
<input type="submit" value="Search"></input>
</form>
</li>
</ul>
</nav>
</header>
<main>
<h1><a href="https://dragoncoder047.github.io/blog/2022/debugger-almost" rel="bookmark" title="Permalink to this page">Debugger, Almost</a></h1>
<div class="flex-row">
<span style="flex: 1">← Previous:
<a href="https://dragoncoder047.github.io/blog/2022/i-still-have-no-idea">
I Still Have No Idea
</a>
</span>
<span>Next:
<a href="https://dragoncoder047.github.io/blog/2022/systems-tested">
Systems Tested
</a> →
</span>
</div>
<div class="post-info">
Posted <time class="published" datetime="2022-12-19T00:00:00-05:00">Mon 19 December 2022</time>
<address>By
<a href="https://dragoncoder047.github.io/blog/">dragoncoder047</a>
</address>
<div class="tags">
Tags:
<a href="https://dragoncoder047.github.io/blog/tag/javascript">javascript</a>
<a href="https://dragoncoder047.github.io/blog/tag/phoo">phoo</a>
<a href="https://dragoncoder047.github.io/blog/tag/programming">programming</a>
</div>
</div>
<p>Today I started work on the Phoo debugger. As-is, it is very simple – I already programmed in a “tick” function into Phoo that gets called every item, and so my debugger only needs to patch itself into this function.</p>
<p>However, the three buttons – “Into”, “Over”, and “Out” – caused me some headache.</p>
<p>The behavior of each, while completely different, is all related to a “hide depth”, which causes the debugger to stop breaking if the return stack gets deeper than the “hide depth”.</p>
<p>Implementing this naïvely would increment the “hide depth” when you click “Into”, decrement it when you click “Out”, and do nothing (except run one step) when you click “Over”.</p>
<p>I quickly discovered that this is badly bugged code. It assumes that every time you click “Into”, there is actually something to jump into, but what if there isn’t? The “hide depth” still gets incremented, and when code proceeds to something to jump into, the debugger jumps in, even if you pressed “Over” or “Out”, not “Into”.</p>
<p>So I tried another approach: the increment or decrement is only applied if the return stack length changes on that tick. Unfortunately, that caused a lot more bugs than it fixed.</p>
<p>I’m still not sure how to do it properly; maybe there’s no correct way, only the one that works best. Will see what happens later.</p>
<hr />
<p><strong>Related Posts</strong></p>
<ul>
<li><a href="https://dragoncoder047.github.io/blog/2022/i-still-have-no-idea">I Still Have No Idea</a></li>
<li><a href="https://dragoncoder047.github.io/blog/2022/phoo-is-mostly-finished">Phoo is (mostly) finished</a></li>
<li><a href="https://dragoncoder047.github.io/blog/2022/why-i-prefer-python">Why I Prefer Python</a></li>
<li><a href="https://dragoncoder047.github.io/blog/2022/change-of-plans">Change of Plans</a></li>
<li><a href="https://dragoncoder047.github.io/blog/2022/terminal-troubles">Terminal Troubles</a></li>
</ul>
<script src="https://giscus.app/client.js"
data-repo="dragoncoder047/blog"
data-repo-id="R_kgDOHCL60w"
data-category="Post Comments"
data-category-id="DIC_kwDOHCL6084CRxCW"
data-mapping="og:title"
data-reactions-enabled="1"
data-input-position="top"
data-theme="dark"
data-lang="en"
crossorigin="anonymous"
async
></script>
<section id="extras">
<div class="blogroll">
<ul>
<li><a href="https://www.conwaylife.com/">Conwaylife.com Forums</a></li>
<li><a href="https://www.python.org/">Python</a></li>
<li><a href="http://www.ulisp.com/">uLisp</a></li>
</ul>
</div>
<div class="social">
<ul>
<li><a href="https://github.com/dragoncoder047">dragoncoder047 on GitHub</a></li>
<li><a href="https://youtube.com/@dragoncoder047">dragoncoder047 on YouTube</a></li>
<li><a href="https://instagram.com/dragoncoder047/">dragoncoder047 on Instagram</a></li>
</ul>
</div>
</section>
</main>
<footer>
<address>
Site built by <a href="https://getpelican.com/">Pelican</a>
</address>
<a href="#" onclick="window.scrollTo({top: 0, left: 0});">Back to top</a>
<!-- Google tag (gtag.js) -->
<script async src="https://www.googletagmanager.com/gtag/js?id=G-XR0F89CCGK"></script>
<script>
window.dataLayer = window.dataLayer || [];
function gtag() {
dataLayer.push(arguments);
}
gtag("js", new Date());
gtag("config", "G-XR0F89CCGK");
</script>
</footer>
</body>
</html>