CS208 Introduction to Computer Systems Wednesday, 11 February 2026 + Second half - "Escape from the zoo" assignment - the gdb debugger - analyzing assembly code while it runs - Buffer overflow assignment - insecure assembly language - how do functions get called? how does memory get used? - Processes - how does a computer run multiple programs at once? - writing a small command shell - Networks - clients and servers - a little bit of TCP/IP - If time: memory hierarchies - caches - virtual memory (how does each process get to pretend it has 2^64 bytes of memory?) + Today - gdb lab (just C code) - starting in on using gdb for assembly - quick run-through of the zoo assignment + gdb lab recap -Wall, -Werror, what are they for? -g: put symbols into the executable to make it easier to debug -Og: use the version of the "optimizer" that makes the code easy to debug -o filename: "output" -- put the executable in filename (gdb) x/40wx 0x7fffffffe980 x means "examine memory" / means "here come some details" 40 means "give me 40 chunks of memory" w means "make each chunk 4 bytes long" x means "show me the chunks in hexadecimal" + Lab