Skip to content

Instantly share code, notes, and snippets.

View Bhupesh-V's full-sized avatar

Bhupesh Varshney Bhupesh-V

View GitHub Profile

How debuggers work

Writing this post in response to the WeekendDevPuzzle of 2022-01-15. This thread has a bunch of submissions, and it's insightful to go over how we often think about debuggers. I'll be linking this post to this twitter thread, which may also contain some follow up twitter follow ups later.

On Linux

Let's start with a simple piece of code. This is the program we'll be debugging. As you can see, it's a fairly simple piece of code. We will be setting a breakpoint on the crashtest function, crashing the debugger and seeing what happens.

Let's start with running this program (we've compiled using gcc -o testdebugcrash testdebugcrash.c). We'll be running this on Linux for now (the importance of this will be understood later). ![start-program](https://user-images.githubusercontent.com/1546858/149652729-dbfa2104-a

@debasishg
debasishg / cache-oblivious.md
Last active October 25, 2025 10:56
Papers related to cache oblivious data structures

Cache Oblivious and Cache Aware Data Structure and Algorithms

  1. Cache-Oblivious Algorithms and Data Structures - Erik Demaine (One of the earliest papers in cache oblivious data structures and algorithms that introduces the cache oblivious model in detail and examines static and dynamic cache oblivious data structures built between 2000-2003)

  2. Cache Oblivious B-Trees - Bender, Demaine, Farch-Colton (This paper presents two dynamic search trees attaining near-optimal performance on any hierarchical memory. One of the fundamental papers in the field where both search trees discussed match the optimal search bound of Θ(1+log (B+1)N) memory transfers)

  3. Cache Oblivious Search Trees via Binary Trees of Small Height - Brodal, Fagerberg, Jacob (The data structure discussed in this paper works on the version of [2] but avoids the use o

@carlosonunez
carlosonunez / Dockerfile
Last active February 4, 2024 15:47
ugit, but even smaller!
FROM alpine:3.18 as base
ENV ESSENTIAL="tar sh"
ENV DEPS="ugit git fzf tput nl cut bash sed awk tr env xargs"
RUN apk add --no-cache \
bash \
coreutils \
git \
ncurses \
ncurses-terminfo \
{
description = "A very basic flake";
inputs = {
ugit-src = {
url = "github:Bhupesh-V/ugit";
flake = false;
};
flake-utils = {
url = "github:numtide/flake-utils";
@tebeka
tebeka / httpd.go
Created February 15, 2024 13:40
Monitoring number of open files on Linux in Go
package main
import (
"expvar"
"fmt"
"log/slog"
"net/http"
"os"
"time"