You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
47 lines
1.3 KiB
47 lines
1.3 KiB
3 years ago
|
+++
|
||
|
title = "Understanding Stacktraces"
|
||
|
date = 2021-11-29
|
||
|
draft = true
|
||
|
|
||
|
[taxonomies]
|
||
|
tags = ["programming", "stack traces"]
|
||
|
+++
|
||
|
|
||
|
I've seen some people confused when their application crashes, spewing a bunch
|
||
|
of lines and they can't figure out what went wrong.
|
||
|
|
||
|
<!-- more -->
|
||
|
|
||
|
But let's start with something easier: What are stacktraces?
|
||
|
|
||
|
## The Turing Machine
|
||
|
|
||
|
To get what stacktraces are, let's start with the very beginning and talk about
|
||
|
Turing Machines.
|
||
|
|
||
|
Alan Turing, father of the computing, thought about having a long tape with
|
||
|
commands[^1] and a pointer that would move forwards or backwards according to
|
||
|
the command.
|
||
|
|
||
|
For example, imagine that you have the following sequence of commands:
|
||
|
|
||
|
- Take a piece of paper
|
||
|
- Fold it in half
|
||
|
- Unfold
|
||
|
- Move the bottom right corner so it touches the fold mark
|
||
|
|
||
|
... and so on (no, I'm not describing the whole process of making a paper
|
||
|
plane). Even if the actions are pretty simple, you can use something to point
|
||
|
which action you're taking so you know which one is the next one. Something
|
||
|
like:
|
||
|
|
||
|
- Take a piece of paper
|
||
|
- Fold it in half
|
||
|
- Unfold **<= I'm Here**
|
||
|
- Move the bottom right corner so it touches the fold mark
|
||
|
|
||
|
---
|
||
|
|
||
|
[^1]: Actually, the Turing Machine would compose a group of 0s and 1s to figure
|
||
|
out a command, but let me simplify things a little bit.
|