{"guid":"6cc5fc97-964e-4850-9292-6c452518e1e6","title":"A debugger from scratch ","subtitle":null,"slug":"ASG2018-213-a_debugger_from_scratch","link":"https://cfp.all-systems-go.io/en/ASG2018/public/events/213","description":"At some stage in your programming life you may well have used a debugger, but did you wonder how it was able to step into and control your executable? In this talk we'll see how debuggers work by building one from scratch in a few lines of Go.\n\nIn this talk Liz will explore how a debugger gains control of a process with the all-powerful ptrace system call. You'll see how we can find the machine code that corresponds to a line of human-readable source code and vice-versa. She will show how breakpoints are set, explain how the stack gets built up, and demonstrate how to generate a stack trace showing the path to that breakpoint. \n\nEven if you know nothing about machine code, you'll leave this talk with a better understanding of how a computer runs an executable, and how a debugger is able to start and stop the executable as you wish. ","original_language":"eng","persons":["Liz Rice"],"tags":["asg2018","213","Monitoring \u0026 Tracing"],"view_count":240,"promoted":false,"date":"2018-09-28T00:00:00.000+02:00","release_date":"2018-09-28T02:00:00.000+02:00","updated_at":"2026-01-21T20:15:07.423+01:00","length":1870,"duration":1870,"thumb_url":"https://static.media.ccc.de/media/events/all_systems_go/2018/213-hd.jpg","poster_url":"https://static.media.ccc.de/media/events/all_systems_go/2018/213-hd_preview.jpg","timeline_url":"https://static.media.ccc.de/media/events/all_systems_go/2018/6cc5fc97-964e-4850-9292-6c452518e1e6-timeline.jpg","thumbnails_url":"https://static.media.ccc.de/media/events/all_systems_go/2018/6cc5fc97-964e-4850-9292-6c452518e1e6-thumbnails.vtt","frontend_link":"https://media.ccc.de/v/ASG2018-213-a_debugger_from_scratch","url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_title":"All Systems Go! 2018","conference_url":"https://api.media.ccc.de/public/conferences/asg2018","related":[{"event_id":6041,"event_guid":"547a4b49-7458-433e-8137-aece8b2d43ea","weight":15},{"event_id":6044,"event_guid":"5808be1e-ce91-48a2-a22a-91c3289d3819","weight":20},{"event_id":6047,"event_guid":"e83405c6-2a35-4834-a462-5da4fe10652e","weight":28},{"event_id":6048,"event_guid":"ee6e8d60-8656-4528-bfae-744f0ba6badb","weight":2},{"event_id":6049,"event_guid":"af6b820d-35e8-4ef9-acc0-56e06e325ba5","weight":2},{"event_id":6053,"event_guid":"0e4c27b1-d60b-450f-b4e4-66c41472e81c","weight":11},{"event_id":6055,"event_guid":"c8321120-2af8-42ca-8e37-a3c9984a169a","weight":2},{"event_id":6056,"event_guid":"5f21e0cf-1ac8-4440-9b73-8562b86a570c","weight":10},{"event_id":6058,"event_guid":"7fe2a84b-bbed-4a4e-80fb-85b581c14b13","weight":26},{"event_id":6062,"event_guid":"59177231-f236-419f-9364-f7269e6aa0d1","weight":10},{"event_id":6064,"event_guid":"c80dcd0e-6ca3-4299-a793-dd023a22b54c","weight":24},{"event_id":6065,"event_guid":"4c310d5b-9acf-4dd7-9660-0b0ce97daa07","weight":10},{"event_id":6068,"event_guid":"44078f4e-52bc-4541-a7a8-5f60f95e44ca","weight":10},{"event_id":6075,"event_guid":"074049eb-0adb-4b29-a51f-aa64eea012cc","weight":10},{"event_id":6076,"event_guid":"68c30487-d434-4b4e-8df0-fb06aa4e8cdf","weight":14},{"event_id":6078,"event_guid":"8a3c7006-ba7f-451c-a555-3a9ca4af5f2f","weight":26},{"event_id":6098,"event_guid":"289155d4-9fab-46ad-86e6-6db5d065e44a","weight":11},{"event_id":6099,"event_guid":"9b3437bb-e750-47ba-9cd5-70e633a3c88b","weight":11},{"event_id":6102,"event_guid":"9524ac7d-5313-4a4b-aba0-1d0a34c1af9e","weight":10},{"event_id":6103,"event_guid":"c6d2bb1a-26b4-4382-a149-55f0b86ff4c4","weight":12}],"recordings":[{"size":99,"length":1870,"mime_type":"video/mp4","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_hd.mp4","state":"new","folder":"h264-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-09-28T17:21:33.813+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/h264-hd/asg2018-213-eng-A_debugger_from_scratch_hd.mp4","url":"https://api.media.ccc.de/public/recordings/28872","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"},{"size":46,"length":1870,"mime_type":"video/mp4","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_sd.mp4","state":"new","folder":"h264-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-09-28T17:54:28.279+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/h264-sd/asg2018-213-eng-A_debugger_from_scratch_sd.mp4","url":"https://api.media.ccc.de/public/recordings/28885","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"},{"size":28,"length":1864,"mime_type":"audio/mpeg","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_mp3.mp3","state":"new","folder":"mp3","high_quality":false,"width":0,"height":0,"updated_at":"2018-09-28T17:56:16.947+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/mp3/asg2018-213-eng-A_debugger_from_scratch_mp3.mp3","url":"https://api.media.ccc.de/public/recordings/28890","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"},{"size":22,"length":1864,"mime_type":"audio/opus","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_opus.opus","state":"new","folder":"opus","high_quality":false,"width":0,"height":0,"updated_at":"2018-09-28T17:56:35.118+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/opus/asg2018-213-eng-A_debugger_from_scratch_opus.opus","url":"https://api.media.ccc.de/public/recordings/28891","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"},{"size":60,"length":1870,"mime_type":"video/webm","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_webm-sd.webm","state":"new","folder":"webm-sd","high_quality":false,"width":720,"height":576,"updated_at":"2018-09-28T17:57:03.729+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/webm-sd/asg2018-213-eng-A_debugger_from_scratch_webm-sd.webm","url":"https://api.media.ccc.de/public/recordings/28892","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"},{"size":155,"length":1870,"mime_type":"video/webm","language":"eng","filename":"asg2018-213-eng-A_debugger_from_scratch_webm-hd.webm","state":"new","folder":"webm-hd","high_quality":true,"width":1920,"height":1080,"updated_at":"2018-09-28T17:57:21.389+02:00","recording_url":"https://cdn.media.ccc.de/events/all_systems_go/2018/webm-hd/asg2018-213-eng-A_debugger_from_scratch_webm-hd.webm","url":"https://api.media.ccc.de/public/recordings/28893","event_url":"https://api.media.ccc.de/public/events/6cc5fc97-964e-4850-9292-6c452518e1e6","conference_url":"https://api.media.ccc.de/public/conferences/asg2018"}]}