CINXE.COM

Building a Debugger | No Starch Press

<!DOCTYPE html> <html lang="en" dir="ltr" xmlns:og="https://ogp.me/ns#"> <head> <link rel="profile" href="https://www.w3.org/1999/xhtml/vocab" /> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <link rel="shortcut icon" href="https://nostarch.com/sites/default/files/favicon.ico" type="image/vnd.microsoft.icon" /> <meta name="description" content="Download Chapter 3: Attaching to a Process If debuggers seem like magic to you, there is no better way to demystify them than to write your own." /> <meta name="generator" content="Drupal 7 (http://drupal.org)" /> <link rel="image_src" href="https://nostarch.com/sites/default/files/BuildingDebugger_placeholder.png" /> <link rel="canonical" href="https://nostarch.com/building-a-debugger" /> <link rel="shortlink" href="https://nostarch.com/node/792" /> <meta property="og:type" content="article" /> <meta property="og:url" content="https://nostarch.com/building-a-debugger" /> <meta property="og:title" content="Building a Debugger" /> <meta property="og:description" content="Download Chapter 3: Attaching to a Process If debuggers seem like magic to you, there is no better way to demystify them than to write your own." /> <meta property="og:updated_time" content="2024-11-14T14:17:32-08:00" /> <meta property="og:image:url" content="https://nostarch.com/sites/default/files/BuildingDebugger_placeholder.png" /> <meta property="og:image:secure_url" content="https://nostarch.com/sites/default/files/BuildingDebugger_placeholder.png" /> <meta name="twitter:card" content="summary" /> <meta name="twitter:site" content="@nostarch" /> <meta name="twitter:url" content="https://nostarch.com/building-a-debugger" /> <meta name="twitter:title" content="Building a Debugger" /> <meta name="twitter:description" content="Download Chapter 3: Attaching to a Process If debuggers seem like magic to you, there is no better way to demystify them than to write your own." /> <meta name="twitter:image" content="https://nostarch.com/sites/default/files/BuildingDebugger_placeholder.png" /> <meta property="product:price:amount" content="59.99" /> <meta property="product:price:currency" content="USD" /> <meta property="product:isbn" content="9781718504080" /> <meta property="article:published_time" content="2024-06-17T13:50:01-07:00" /> <meta property="article:modified_time" content="2024-11-14T14:17:32-08:00" /> <meta property="product:retailer_part_no" content="9781718504080-c" /> <meta property="product:mfr_part_no" content="9781718504080-c" /> <title>Building a Debugger | No Starch Press</title> <link type="text/css" rel="stylesheet" href="https://nostarch.com/sites/default/files/css/css_lQaZfjVpwP_oGNqdtWCSpJT1EMqXdMiU84ekLLxQnc4.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://nostarch.com/sites/default/files/css/css_guSWpwqRBCVb2J7ivC8BaNuaPffCXmbkGB5xDBqKKu8.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://nostarch.com/sites/default/files/css/css_Dw0rmhFX_owMmlf1HH5Y-_BnOHcMlkri1yMjYHD4ffs.css" media="all" /> <link type="text/css" rel="stylesheet" href="https://nostarch.com/sites/default/files/css/css_XJm3Wqia1GUjoI4j54duSLNZVR3Kxhbwy0s3UwuhhHg.css" media="all" /> <!-- HTML5 element support for IE6-8 --> <!--[if lt IE 9]> <script src="https://cdn.jsdelivr.net/html5shiv/3.7.3/html5shiv-printshiv.min.js"></script> <![endif]--> <script src="//ajax.googleapis.com/ajax/libs/jquery/2.2.4/jquery.min.js"></script> <script>window.jQuery || document.write("<script src='/sites/all/modules/contrib/jquery_update/replace/jquery/2.2/jquery.min.js'>\x3C/script>")</script> <script src="https://nostarch.com/misc/jquery-extend-3.4.0.js?v=2.2.4"></script> <script src="https://nostarch.com/misc/jquery-html-prefilter-3.5.0-backport.js?v=2.2.4"></script> <script src="https://nostarch.com/misc/jquery.once.js?v=1.2"></script> <script src="https://nostarch.com/misc/drupal.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/jquery_update/js/jquery_browser.js?v=0.0.1"></script> <script src="https://nostarch.com/misc/form-single-submit.js?v=7.102"></script> <script src="https://nostarch.com/sites/all/modules/contrib/ubercart/uc_file/uc_file.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/libraries/colorbox/jquery.colorbox-min.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/colorbox/js/colorbox.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/colorbox/styles/plain/colorbox_style.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/colorbox/js/colorbox_load.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/colorbox/js/colorbox_inline.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/ubercart/uc_cart/uc_cart_block.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/modules/contrib/google_analytics/googleanalytics.js?snvsu3"></script> <script src="https://www.googletagmanager.com/gtag/js?id=UA-5027625-1"></script> <script>window.google_analytics_uacct = "UA-5027625-1";window.dataLayer = window.dataLayer || [];function gtag(){dataLayer.push(arguments)};gtag("js", new Date());gtag("set", "developer_id.dMDhkMT", true);gtag("config", "UA-5027625-1", {"groups":"default","anonymize_ip":true});gtag("config", "G-51XGZT9Y4H", {"groups":"default","anonymize_ip":true});</script> <script src="https://nostarch.com/sites/all/themes/nostarch/js/bootstrap.min.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/themes/nostarch/js/main.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/themes/nostarch/js/front_grid_height.js?snvsu3"></script> <script>jQuery.extend(Drupal.settings, {"basePath":"\/","pathPrefix":"","setHasJsCookie":0,"ajaxPageState":{"theme":"nostarch","theme_token":"tlOChcNWUNNPLu3fBAhSCR70e31VcHIBwvdYVk7E8sg","js":{"sites\/all\/modules\/contrib\/addthis\/addthis.js":1,"sites\/all\/libraries\/shariff\/shariff.min.js":1,"sites\/all\/themes\/contrib\/bootstrap\/js\/bootstrap.js":1,"\/\/ajax.googleapis.com\/ajax\/libs\/jquery\/2.2.4\/jquery.min.js":1,"0":1,"misc\/jquery-extend-3.4.0.js":1,"misc\/jquery-html-prefilter-3.5.0-backport.js":1,"misc\/jquery.once.js":1,"misc\/drupal.js":1,"sites\/all\/modules\/contrib\/jquery_update\/js\/jquery_browser.js":1,"misc\/form-single-submit.js":1,"sites\/all\/modules\/contrib\/ubercart\/uc_file\/uc_file.js":1,"sites\/all\/libraries\/colorbox\/jquery.colorbox-min.js":1,"sites\/all\/modules\/contrib\/colorbox\/js\/colorbox.js":1,"sites\/all\/modules\/contrib\/colorbox\/styles\/plain\/colorbox_style.js":1,"sites\/all\/modules\/contrib\/colorbox\/js\/colorbox_load.js":1,"sites\/all\/modules\/contrib\/colorbox\/js\/colorbox_inline.js":1,"sites\/all\/modules\/contrib\/ubercart\/uc_cart\/uc_cart_block.js":1,"sites\/all\/modules\/contrib\/google_analytics\/googleanalytics.js":1,"https:\/\/www.googletagmanager.com\/gtag\/js?id=UA-5027625-1":1,"1":1,"sites\/all\/themes\/nostarch\/js\/bootstrap.min.js":1,"sites\/all\/themes\/nostarch\/js\/main.js":1,"sites\/all\/themes\/nostarch\/js\/front_grid_height.js":1},"css":{"modules\/system\/system.base.css":1,"modules\/field\/theme\/field.css":1,"sites\/all\/modules\/contrib\/logintoboggan\/logintoboggan.css":1,"modules\/node\/node.css":1,"sites\/all\/modules\/contrib\/uc_fedex\/uc_fedex.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_file\/uc_file.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_order\/uc_order.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_product\/uc_product.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_store\/uc_store.css":1,"sites\/all\/modules\/contrib\/views\/css\/views.css":1,"sites\/all\/modules\/contrib\/ckeditor\/css\/ckeditor.css":1,"sites\/all\/modules\/contrib\/uc_discounts_alt\/uc_discounts\/uc_discounts.css":1,"sites\/all\/modules\/contrib\/colorbox\/styles\/plain\/colorbox_style.css":1,"sites\/all\/modules\/contrib\/ctools\/css\/ctools.css":1,"sites\/all\/modules\/contrib\/ubercart\/uc_cart\/uc_cart_block.css":1,"sites\/all\/libraries\/shariff\/shariff.complete.css":1,"sites\/all\/themes\/nostarch\/css\/en_styles.css":1,"sites\/all\/themes\/nostarch\/css\/custom.css":1,"sites\/all\/themes\/nostarch\/css\/bootstrap-3-vert-offset.css":1,"sites\/all\/themes\/nostarch\/css\/bootstrap-3-autoclear.css":1,"sites\/all\/themes\/nostarch\/css\/glyphicons.css":1}},"colorbox":{"opacity":"0.85","current":"{current} of {total}","previous":"\u00ab Prev","next":"Next \u00bb","close":"Close","maxWidth":"98%","maxHeight":"98%","fixed":true,"mobiledetect":true,"mobiledevicewidth":"480px","file_public_path":"\/sites\/default\/files","specificPagesDefaultValue":"admin*\nimagebrowser*\nimg_assist*\nimce*\nnode\/add\/*\nnode\/*\/edit\nprint\/*\nprintpdf\/*\nsystem\/ajax\nsystem\/ajax\/*"},"better_exposed_filters":{"views":{"topics":{"displays":{"block":{"filters":[]}}},"related_products":{"displays":{"block":{"filters":[]}}}}},"googleanalytics":{"account":["UA-5027625-1","G-51XGZT9Y4H"],"trackOutbound":1,"trackMailto":1,"trackDownload":1,"trackDownloadExtensions":"7z|aac|arc|arj|asf|asx|avi|bin|csv|doc(x|m)?|dot(x|m)?|exe|flv|gif|gz|gzip|hqx|jar|jpe?g|js|mp(2|3|4|e?g)|mov(ie)?|msi|msp|pdf|phps|png|ppt(x|m)?|pot(x|m)?|pps(x|m)?|ppam|sld(x|m)?|thmx|qtm?|ra(m|r)?|sea|sit|tar|tgz|torrent|txt|wav|wma|wmv|wpd|xls(x|m|b)?|xlt(x|m)|xlam|xml|z|zip","trackColorbox":1},"urlIsAjaxTrusted":{"\/building-a-debugger":true},"bootstrap":{"anchorsFix":"0","anchorsSmoothScrolling":"0","formHasError":1,"popoverEnabled":1,"popoverOptions":{"animation":1,"html":0,"placement":"right","selector":"","trigger":"click","triggerAutoclose":1,"title":"","content":"","delay":0,"container":"body"},"tooltipEnabled":1,"tooltipOptions":{"animation":1,"html":0,"placement":"auto left","selector":"","trigger":"hover focus","delay":0,"container":"body"}}});</script> </head> <body class="html not-front not-logged-in two-sidebars page-node page-node- page-node-792 node-type-product uc-product-node"> <div id="skip-link"> <a href="#main-content" class="element-invisible element-focusable">Skip to main content</a> </div> <header id="" class="header" role="banner" class="navbar navbar-default"> <div class="container"> <div class="row"> <nav role="navigation" class="navbar navbar-default visible-xs"> <div class="navbar-header"> <button type="button" class="navbar-toggle collapsed" data-toggle="collapse" data-target="#navbar" aria-expanded="false" aria-controls="navbar"> <span class="sr-only">Toggle navigation</span> <span class="icon-bar"></span> <span class="icon-bar"></span> <span class="icon-bar"></span> </button> <a class="navbar-brand text-uppercase" href="/"><img src="https://nostarch.com/sites/all/themes/nostarch/logo.png" alt="Home" class="img-responsive"/></a> </div> <div id="navbar" class="navbar-collapse collapse text-center"> <ul class="menu nav navbar-nav"><li class="first leaf"><a href="/catalog.htm" title="Explore our catalog">Catalog</a></li> <li class="leaf"><a href="https://nostarch.com/merchandise-0" title="Merchandise">Merchandise</a></li> <li class="leaf"><a href="/blog" title="The No Starch Press blog">Blog</a></li> <li class="leaf"><a href="https://nostarch.com/early-access-program" title="Media contact">Early Access</a></li> <li class="leaf"><a href="/writeforus" title="Submit a book proposal">Write for Us</a></li> <li class="leaf"><a href="/about" title="About No Starch Press">About Us</a></li> <li class="last leaf"><a href="/contactus" title="Contact Us">Contact Us</a></li> </ul> <div class="region region-navigation"> <section id="block-uc-cart-cart" class="block block-uc-cart clearfix"> <h2 class="block-title"><a href="/cart"><span class="cart-block-icon-empty" title="View your shopping cart."></span></a><span class="cart-block-title-bar" title="Show/hide shopping cart contents.">Shopping cart<span class="cart-block-arrow arrow-down"></span></span></h2> <p class="cart-block-items collapsed uc-cart-empty">There are no products in your shopping cart.</p><table class="cart-block-summary"><tbody><tr><td class="cart-block-summary-items"><span class="num-items">0</span> Items</td><td class="cart-block-summary-total"><label>Total:</label> <span class="uc-price">$0.00</span></td></tr></tbody></table> </section> <section id="block-search-api-page-site-search" class="block block-search-api-page clearfix"> <form action="/building-a-debugger" method="post" id="search-api-page-search-form-site-search" accept-charset="UTF-8"><div><div class="form-item form-item-keys-2 form-type-textfield form-group"><input placeholder="Search" class="form-control form-text" type="text" id="edit-keys-2" name="keys_2" value="" size="15" maxlength="128" /> <label class="control-label element-invisible" for="edit-keys-2">Enter your keywords</label> </div><input type="hidden" name="id" value="2" /> <button class="icon glyphicon glyphicon-search btn-primary form-control btn form-submit" type="submit" id="edit-submit-2" name="op" value=""></button> <input type="hidden" name="form_build_id" value="form-Y6TlgOrYp0QBvWnxQwVOL1wB_9ncIyrzt6W-kSMEaok" /> <input type="hidden" name="form_id" value="search_api_page_search_form_site_search" /> </div></form> </section> </div> </div> </nav> <div class="navbar-header"> <div class="logo-wrapper col-sm-6 hidden-xs"> <a class="logo navbar-btn pull-left" href="/" title="Home"> <img src="https://nostarch.com/sites/all/themes/nostarch/logo.png" alt="Home" class="img-responsive"/> </a> </div> <div class="logo-wrapper col-sm-6 hidden-xs"> <div class="region region-navigation"> <div class="region region-navigation"> <section id="block-uc-cart-cart" class="block block-uc-cart clearfix"> <h2 class="block-title"><a href="/cart"><span class="cart-block-icon-empty" title="View your shopping cart."></span></a><span class="cart-block-title-bar" title="Show/hide shopping cart contents.">Shopping cart<span class="cart-block-arrow arrow-down"></span></span></h2> <p class="cart-block-items collapsed uc-cart-empty">There are no products in your shopping cart.</p><table class="cart-block-summary"><tbody><tr><td class="cart-block-summary-items"><span class="num-items">0</span> Items</td><td class="cart-block-summary-total"><label>Total:</label> <span class="uc-price">$0.00</span></td></tr></tbody></table> </section> <section id="block-search-api-page-site-search" class="block block-search-api-page clearfix"> <form action="/building-a-debugger" method="post" id="search-api-page-search-form-site-search" accept-charset="UTF-8"><div><div class="form-item form-item-keys-2 form-type-textfield form-group"><input placeholder="Search" class="form-control form-text" type="text" id="edit-keys-2" name="keys_2" value="" size="15" maxlength="128" /> <label class="control-label element-invisible" for="edit-keys-2">Enter your keywords</label> </div><input type="hidden" name="id" value="2" /> <button class="icon glyphicon glyphicon-search btn-primary form-control btn form-submit" type="submit" id="edit-submit-2" name="op" value=""></button> <input type="hidden" name="form_build_id" value="form-Y6TlgOrYp0QBvWnxQwVOL1wB_9ncIyrzt6W-kSMEaok" /> <input type="hidden" name="form_id" value="search_api_page_search_form_site_search" /> </div></form> </section> </div> </div> </div> </div> </div> </div> <div class="container"> <div class="row"> <div class="navbar-collapse collapse"> <nav role="navigation"> <ul class="menu nav navbar-nav"><ul class="menu nav navbar-nav"><li class="first leaf"><a href="/catalog.htm" title="Explore our catalog">Catalog</a></li> <li class="leaf"><a href="https://nostarch.com/merchandise-0" title="Merchandise">Merchandise</a></li> <li class="leaf"><a href="/blog" title="The No Starch Press blog">Blog</a></li> <li class="leaf"><a href="https://nostarch.com/early-access-program" title="Media contact">Early Access</a></li> <li class="leaf"><a href="/writeforus" title="Submit a book proposal">Write for Us</a></li> <li class="leaf"><a href="/about" title="About No Starch Press">About Us</a></li> <li class="last leaf"><a href="/contactus" title="Contact Us">Contact Us</a></li> </ul></ul> </nav> </div> </div> </div> </header> <div class="main-container container"> <header role="banner" id="page-header"> <div class="region region-header"> <section id="block-block-156" class="block block-block clearfix"> <style> <!--/*--><![CDATA[/* ><!--*/ #banner { height: 120px; } #banner-graphic { width: 700px; } #banner-countdown { width: 240px; } #banner-cta { width: 200px; text-align: center; margin-top: 19px; } .banner-column { float: left; } .banner_image { max-width: 100% } @media (max-width: 1199px) { #banner-graphic { width: 500px; } } @media (max-width: 991px) { #banner { height: 160px; } #banner-graphic { float: none; width: 100%; } #banner-countdown { width: 50%; } #banner-cta { width: 50%; } } @media (max-width: 422px) { #banner { height: 200px; } #banner-countdown { float: none; width: 100%; } #banner-cta { float: none; width: 100%; margin-top: 10px; } } .time-left { margin: 1em; font-size: .75em; font-weight: bold; text-transform: uppercase; font-family: Arial, Helvetica, Verdana, sans-serif; text-align: center; } .countdown-container { display: flex; justify-content: center; } .countdown-timer { font-family: Arial, Helvetica, Verdana, sans-serif; color: white; } .countdown-timer .countdown-timer-counter { background-color: #222; display: inline-flex; flex-direction: column; justify-content: space-around; text-align: center; border-radius: 0.2em; width: 3em; line-height: 1.3; margin: 0 0.2em; padding: .6em 0.15em 0.75em; text-shadow: 1px 1px 1px rgba(0,0,0,0.85); } .countdown-timer .countdown-timer-counter .countdown-timer-number { font-weight: bold; font-size: 1em; } .countdown-timer .countdown-timer-counter .countdown-label { font-size: 0.75em; } .cta-parent { text-align: center; } .cta-button { font-family: Arial, Helvetica, Verdana, sans-serif; color: white; display: inline-block; font-weight: bold; text-decoration: none; background-color: #ec6352; border: 1px solid #ec6352; cursor: pointer; padding: 0.8em 1.25em 1em; margin: 0.75em auto 0; font-size: 1.15em; text-rendering: optimizeLegibility; border-radius: 0.3em; text-shadow: 1px 1px 1px rgba(0,0,0,0.65); text-transform: uppercase; transition-duration: 0.2s; transition-property: background-color, border, color, box-shadow, text-shadow; transition-timing-function: ease-in-out; white-space: nowrap; } .cta-button:hover { background-color: #ec6352; border: 1px solid #ec6352; } /*--><!]]>*/ </style><div id="banner"> <div class="banner-column" id="banner-graphic"> <p><a href="https://www.humblebundle.com/books/hacking-2024-no-starch-books" target="_blank"><img src="https://nostarch.com/images/banners/HumbleBundleDec2024.png" class="banner_image" /></a></p> </div> <div class="banner-column" id="banner-countdown"> <div class="time-left">time left</div> <div class="countdown-container"> <div class="countdown-timer"> <div class="countdown-timer-counter" data-unit="days"> <div class="countdown-timer-number"></div> <div class="countdown-label">days</div> </div> <div class="countdown-timer-counter" data-unit="hours"> <div class="countdown-timer-number"></div> <div class="countdown-label">hours</div> </div> <div class="countdown-timer-counter" data-unit="minutes"> <div class="countdown-timer-number"></div> <div class="countdown-label">min</div> </div> <div class="countdown-timer-counter" data-unit="seconds"> <div class="countdown-timer-number"></div> <div class="countdown-label">sec</div> </div> </div> </div> </div> <div class="banner-column" id="banner-cta"><a href="https://www.humblebundle.com/books/hacking-2024-no-starch-books" target="_blank"><span class="cta-button">Get The Bundle</span></a></div> </div> <script> <!--//--><![CDATA[// ><!-- // Time when event ends in UTC time var countdownTime = new Date(2024,11,23,19,0,0,0); // User's timezone offset var localOffset = countdownTime.getTimezoneOffset() * 60000; // Update the count down every 1 second var x = setInterval(function() { // Get todays UTC date and time var currentLocalTime = new Date(); var currentUtcTime = currentLocalTime.getTime() + localOffset; // Find the distance between now and the count down date var distance = countdownTime.getTime() - currentUtcTime; // Time calculations for days, hours, minutes and seconds var days = Math.floor(distance / (1000 * 60 * 60 * 24)); var hours = Math.floor((distance % (1000 * 60 * 60 * 24)) / (1000 * 60 * 60)); var minutes = Math.floor((distance % (1000 * 60 * 60)) / (1000 * 60)); var seconds = Math.floor((distance % (1000 * 60)) / 1000); document.querySelectorAll('[data-unit="days"]')[0].getElementsByClassName("countdown-timer-number")[0].innerHTML = days > 0 ? days : "0"; document.querySelectorAll('[data-unit="hours"]')[0].getElementsByClassName("countdown-timer-number")[0].innerHTML = hours > 0 ? hours : "0"; document.querySelectorAll('[data-unit="minutes"]')[0].getElementsByClassName("countdown-timer-number")[0].innerHTML = minutes > 0 ? minutes : "0"; document.querySelectorAll('[data-unit="seconds"]')[0].getElementsByClassName("countdown-timer-number")[0].innerHTML = seconds > 0 ? seconds : "0"; }, 1000); //--><!]]> </script> </section> <section id="block-block-155" class="block block-block clearfix"> <style> <!--/*--><![CDATA[/* ><!--*/ .image_full { max-width: 95%; height: 120px; } .image_mobile { max-width: 95%; height: 120px; } @media (max-width: 767px) { .image_full { display: none; } } @media (min-width: 768px) { .image_mobile { display: none; } } img { display: block; margin-left: auto; margin-right: auto; } /*--><!]]>*/ </style><div id="banner"> <img src="https://nostarch.com/images/banners/BFWebsiteBanner.png" class="image_full" /><br /> <img src="https://nostarch.com/images/banners/BFWebsiteBanner.png" class="image_mobile" /> </div> </section> </div> </header> <!-- /#page-header --> <div class="row"> <aside class="col-sm-3" role="complementary"> <div class="region region-sidebar-first well"> <section id="block-views-topics-block" class="block block-views clearfix"> <button class="btn btn-primary btn-block visible-xs vert-offset-top-2" data-toggle="collapse" data-target="#topics"><span class="glyphicon glyphicon-menu-down pull-left"></span> <span class="btn-text">Topics</span><span class="glyphicon glyphicon-menu-down pull-right"></span></button> <h2 class="block-title hidden-xs">Topics</h2> <div id="topics" class="view-content collapse dont-collapse animateCollapse"> <div class="view view-topics view-id-topics view-display-id-block view-dom-id-cd08ca36af0642574544e09872df21ec"> <div class="view-content"> <div class="item-list"> <ul> <li class="views-row views-row-1 views-row-odd views-row-first"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/art-photography-design">Art &amp; Design</a></span> </div></li> <li class="views-row views-row-2 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/general-computing">General Computing</a></span> </div></li> <li class="views-row views-row-3 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/security">Hacking &amp; Computer Security</a></span> </div></li> <li class="views-row views-row-4 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/hardware-and-diy">Hardware / DIY</a></span> </div></li> <li class="views-row views-row-5 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/kids">Kids</a></span> </div></li> <li class="views-row views-row-6 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/lego">LEGO®</a></span> </div></li> <li class="views-row views-row-7 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/linux-bsd-unix">Linux &amp; BSD</a></span> </div></li> <li class="views-row views-row-8 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/manga">Manga</a></span> </div></li> <li class="views-row views-row-9 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/programming">Programming</a></span> </div></li> <li class="views-row views-row-10 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/python">Python</a></span> </div></li> <li class="views-row views-row-11 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/rforall">R for All</a></span> </div></li> <li class="views-row views-row-12 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/science-math">Science &amp; Math</a></span> </div></li> <li class="views-row views-row-13 views-row-odd"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/scratch">Scratch</a></span> </div></li> <li class="views-row views-row-14 views-row-even"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/system-administration">System Administration</a></span> </div></li> <li class="views-row views-row-15 views-row-odd views-row-last"> <div class="views-field views-field-name"> <span class="field-content"><a href="/catalog/early-access">Early Access</a></span> </div></li> </ul></div> </div> <div class="view-footer"> <style> <!--/*--><![CDATA[/* ><!--*/ .view-topics .item-list a {font-weight: bold;} .view-topics ul {padding-left: 20px;} /*--><!]]>*/ </style> </div> </div> </div> </section><section id="block-block-12" class="block block-block clearfix"> <div class="rounded_border_block"><span style="font-family:Arial,Helvetica,sans-serif"><strong><span style="font-size:12px"><span style="color:#c0392b"><a href="https://nostarch.com/about_ebooks.htm">FREE ebook edition with every print book purchased from nostarch.com!</a></span></span></strong></span></div> <p class="rtecenter"><span style="font-size:22px">+</span></p> <div class="rounded_border_block"><span style="font-family:Arial,Helvetica,sans-serif"><strong><span style="font-size:12px"><a href="https://nostarch.com/early-access-program"><span style="color:#c0392b">EARLY ACCESS lets you read full chapters months before a title's release date!</span></a></span></strong></span></div> </section> <section id="block-nostarch-custom-login-block" class="block block-nostarch-customclearfix"> <h2 class="block-title">User login</h2> <ul> <li><a href="/user">Log in</a></a></li> <li><a href="/user/register">Create account</a></a></li> </ul> </section> <section id="block-block-78" class="block block-block clearfix"> <script data-account="eeqOpWOUyZ" src="https://cdn.userway.org/widget.js"></script> </section> </div> </aside> <!-- /#sidebar-first --> <section class="col-sm-6" style=""> <a id="main-content"></a> <div class="region region-content"> <section id="block-system-main" class="block block-system clearfix"> <div class="ds-1col node node-product view-mode-full clearfix"> <div class=""> <div class="field field-name-field-image-cache field-type-image field-label-hidden"><div class="field-items"><div class="field-item even"><div class="product-image"><div class="main-product-image"><a href="https://nostarch.com/sites/default/files/styles/uc_product_full/public/BuildingDebugger_placeholder.png?itok=jjIS7EWI" title="Building a Debugger placeholder cover" class="colorbox" rel="uc_image_0"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/uc_product/public/BuildingDebugger_placeholder.png?itok=kSYOafdz" alt="Building a Debugger placeholder cover" title="Building a Debugger placeholder cover" /></a></div></div></div></div></div><div class="field field-name-entity-title field-type-ds field-label-hidden"><div class="field-items"><div class="field-item even"><h1 class="page-header">Building a Debugger</h1></div></div></div><div class="field field-name-field-author field-type-text field-label-hidden"><div class="field-items"><div class="field-item even">by Sy Brand</div></div></div><div class="field field-name-released-date field-type-ds field-label-hidden"><div class="field-items"><div class="field-item even">Spring 2025, 504 pp</div></div></div><div class="field field-name-field-isbn13 field-type-text field-label-inline clearfix clearfix"><div class="field-label">ISBN-13:&nbsp;</div><div class="field-items"><div class="field-item even">9781718504080</div></div></div><div class="add-to-cart"><form action="/building-a-debugger" method="post" id="uc-product-add-to-cart-form-792" accept-charset="UTF-8"><div><div id="uc_product_add_to_cart_form-792-attributes" class="attributes"><div class="attribute attribute-1 odd"><div class="form-item form-item-attributes-1 form-type-radios form-group"><div id="edit-attributes-1" class="form-radios"><div class="form-item form-item-attributes-1 form-type-radio radio"> <label class="control-label" for="edit-attributes-1-9"><input type="radio" id="edit-attributes-1-9" name="attributes[1]" value="9" checked="checked" class="form-radio" />Print Book (PREORDER) and EARLY ACCESS Ebook, $59.99</label> </div><div class="form-item form-item-attributes-1 form-type-radio radio"> <label class="control-label" for="edit-attributes-1-10"><input type="radio" id="edit-attributes-1-10" name="attributes[1]" value="10" class="form-radio" />EARLY ACCESS Ebook, $47.99</label> </div></div></div></div></div><input type="hidden" name="qty" value="1" /> <input type="hidden" name="form_build_id" value="form-kTrpfzfFstKzT1hkTsLrJYKPK6Xgr0wsHZF6g4e1xow" /> <input type="hidden" name="form_id" value="uc_product_add_to_cart_form_792" /> <div class="form-actions form-wrapper form-group" id="edit-actions"><button class="node-add-to-cart btn btn-default form-submit" type="submit" id="edit-submit-792" name="op" value="Pre-Order">Pre-Order</button> </div><span style="color: red;" "padding: 300px;>Use coupon code PREORDER to get 25% off!</span></div></form></div><div class="field field-name-product-menu field-type-ds field-label-hidden"><div class="field-items"><div class="field-item even"><div class="menu-wrapper"><ul class="menu nav"><li><a href="#content">Contents</a></li></ul></div></div></div></div><div class="field field-name-body field-type-text-with-summary field-label-hidden"><div class="field-items"><div class="field-item even"><p><a href="/download/BuildingADebugger_Chapter3.pdf" target="_blank" class="btn btn-success downloadbutton" style="font-weight: 400;">Download Chapter 3: Attaching to a Process</a></p> <p><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">If debuggers seem like magic to you, there is no better way to demystify them than to write your own. This book will show you exactly how to do it, walking you through the entire process of building a debugger for x64 Linux systems using C++. As you go from an empty filesystem folder to a fully fledged debugger capable of setting breakpoints, stepping through code, manipulating variables, and more, you’ll learn how to:</span></span></span></p> <ul> <li style="list-style-type:disc"><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">Attach to a process</span></span></span></li> <li style="list-style-type:disc"><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">Read and write to registers</span></span></span></li> <li style="list-style-type:disc"><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">Set hardware and software breakpoints</span></span></span></li> <li style="list-style-type:disc"><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">Output disassembly</span></span></span></li> <li style="list-style-type:disc"><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">Support multithreading and other tasks</span></span></span></li> </ul> <p><span style="font-size:10pt"><span style="font-family:Arial,sans-serif"><span style="color:#000000">As you add features to your debugger, you’ll also pick up a wealth of knowledge about operating systems, compilers, software testing, and low-level programming that you can use in your day-to-day development.</span></span></span></p> </div></div></div><div class="field field-name-field-author-bio field-type-text-long field-label-abovec"><div class="field-label">Author Bio&nbsp;</div><div class="field-items"><div class="field-item even"><p><span style="font-size:10pt"><span style="font-family:Roboto,sans-serif"><span style="color:#000000"><strong>Sy Brand</strong> is Microsoft’s C++ Developer Advocate. With more than 10 years’ experience in developer tooling, they’ve worked on profilers, compilers, language runtimes, standard libraries, and, of course, debuggers. They’ve also contributed to the standards for C++, DWARF, and HSA.</span></span></span></p> <p><span style="font-size:10pt"><span style="font-family:Roboto,sans-serif"><span style="color:#000000">They graduated from the University of St Andrews with a 1st class degree in computer science, where they specialized in compiler implementation.</span></span></span></p> <p><span style="font-size:10pt"><span style="font-family:Roboto,sans-serif"><span style="color:#000000">Outside the world of technology, they are a published poet, maker of experimental films and music, activist, and parent to three cats and one entire human.</span></span></span></p> </div></div></div><div class="field field-name-field-toc field-type-text-long field-label-abovec" id="content"><div class="field-label">Table of contents&nbsp;</div><div class="field-items"><div class="field-item even"><p><span style="color:#e74c3c">Chapter 1: Project Setup<br /> Chapter 2: Compilation and Computer Architecture<br /> Chapter 3: Attaching to a Process<br /> Chapter 4: Pipes, procfs, and Automated Testing<br /> Chapter 5: Registers<br /> Chapter 6: Testing Registers with x64 Assembly<br /> Chapter 7: Software Breakpoints<br /> Chapter 8: Memory and Disassembly<br /> Chapter 9: Hardware Breakpoints and Watchpoints<br /> Chapter 10: Signals and Syscalls<br /> Chapter 11: Object Files<br /> Chapter 12: Debug Information<br /> Chapter 13: Line Tables<br /> Chapter 14: Source-Level Breakpoints and Stepping<br /> Chapter 15: Call Frame Information<br /> Chapter 16: Stack Unwinding<br /> Chapter 17: Shared Libraries<br /> Chapter 18: Multithreading<br /> Chapter 19: DWARF Expressions<br /> Chapter 20: Variables and Types<br /> Chapter 21: Expression Evaluation<br /> Chapter 22: Advanced Topics<br /> Appendix: Check Your Knowledge Answers<br /> Glossary<br /> Index</span><br />  </p> <p>The chapters in <span style="color:#e74c3c">red</span> are included in this<a href="https://nostarch.com/early-access-program"> <u>Early Access</u></a> PDF.</p> </div></div></div> </div> </div> </section> <section id="block-shariff-shariff-block" class="block block-shariff clearfix"> <div class="shariff" data-services="[&quot;facebook&quot;,&quot;print&quot;,&quot;twitter&quot;]" data-theme="colored" data-orientation="horizontal" data-twitter-via="nostarch" data-lang="en"></div> </section> </div> </section> <aside class="col-sm-3" role="complementary"> <div class="region region-sidebar-second"> <section id="block-system-navigation" class="block block-system block-menu clearfix"> <h2 class="block-title">Navigation</h2> <ul class="menu nav"><li class="first last leaf"><a href="/user" title="">My account</a></li> </ul> </section> <section id="block-block-52" class="block block-block clearfix"> <p><a href="/mailchimp/subscribe">Want sweet deals? <br />Sign up for our newsletter.</a></p> </section> <section id="block-views-related-products-block" class="block block-views clearfix"> <h2 class="block-title">You might also like...</h2> <div class="view view-related-products view-id-related_products view-display-id-block auto-clear view-dom-id-839b3b9b5864c3fb5d86e3cfb9b349a2"> <div class="view-content"> <div class="views-row views-row-1 views-row-odd views-row-first col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/foundationsofcomp"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/SLoP_front.png?itok=rEFcWrtg" width="90" height="119" alt="The Secret Life of Programs" title="The Secret Life of Programs" /></a></div> </div> </div> <div class="views-row views-row-2 views-row-even col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/deep-learning-crash-course"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/DeepLearningCC_placeholder.png?itok=PdqoDVCD" width="90" height="119" alt="Deep Learning Crash Course placeholder cover" title="Deep Learning Crash Course placeholder cover" /></a></div> </div> </div> <div class="views-row views-row-3 views-row-odd col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/book-batch-scripting"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/BatchScripting_frontcover.png?itok=L-79UxhS" width="90" height="119" alt="Batch Scripting cover" title="Batch Scripting cover" /></a></div> </div> </div> <div class="views-row views-row-4 views-row-even col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/php-crash-course"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/PHPCC_frontcover.png?itok=dZ36uAKB" width="90" height="120" alt="PHP Crash Course Cover" title="PHP Crash Course Cover" /></a></div> </div> </div> <div class="views-row views-row-5 views-row-odd col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/CodingWorkbook"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/coding-workbook_fcvr.png?itok=Fehdw7Bq" width="90" height="113" alt="The Coding Workbook Cover" title="The Coding Workbook" /></a></div> </div> </div> <div class="views-row views-row-6 views-row-even views-row-last col-xs-6 col-sm-6 col-md-12"> <div class="views-field views-field-field-image-cache"> <div class="field-content"><a href="/csactivities"><img class="img-responsive" src="https://nostarch.com/sites/default/files/styles/product/public/CSActivitiesBk_cover_front_rev.png?itok=q8mnqW8w" width="90" height="116" alt="The Computer Science Activity Book" title="The Computer Science Activity Book" /></a></div> </div> </div> </div> </div> </section> </div> </aside> <!-- /#sidebar-second --> </div> </div> <footer class="footer container"> <div class="region region-footer"> <section id="block-block-16" class="block block-block clearfix"> <div id="footer-links"> <br> <a class="footer-links" href="/about.htm">About Us</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/Jobs.htm">Jobs!</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/distribution.htm">Sales and Distribution</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/rights">Rights</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/media.htm">Media</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/academic.htm">Academic Requests</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/conferences.htm">Conferences</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/orderfaq.htm">FAQ</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/contactus">Contact Us</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/writeforus">Write for Us</a> &nbsp;<span class="footer-divider">|</span>&nbsp; <a class="footer-links" href="/privacypolicy.htm">Privacy</a> </div> </section> <section id="block-nostarch-custom-custom-footer-copyright" class="block block-nostarch-custom clearfix"> <div class="block-block"> <p>Copyright 2024. No Starch Press, Inc</p> </div> </section> </div> </footer> <script src="https://nostarch.com/sites/all/modules/contrib/addthis/addthis.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/libraries/shariff/shariff.min.js?snvsu3"></script> <script src="https://nostarch.com/sites/all/themes/contrib/bootstrap/js/bootstrap.js?snvsu3"></script> <!-- Reddit Pixel --> <script> !function(w,d){if(!w.rdt){var p=w.rdt=function(){p.sendEvent?p.sendEvent.apply(p,arguments):p.callQueue.push(arguments)};p.callQueue=[];var t=d.createElement("script");t.src="https://www.redditstatic.com/ads/pixel.js",t.async=!0;var s=d.getElementsByTagName("script")[0];s.parentNode.insertBefore(t,s)}}(window,document);rdt('init','t2_6acpsf9y');rdt('track', 'PageVisit'); </script> <!-- DO NOT MODIFY UNLESS TO REPLACE A USER IDENTIFIER --> <!-- End Reddit Pixel --> <script>(function(){function c(){var b=a.contentDocument||a.contentWindow.document;if(b){var d=b.createElement('script');d.innerHTML="window.__CF$cv$params={r:'8eca197c7f96ce85',t:'MTczMzI5NzUxNS4wMDAwMDA='};var a=document.createElement('script');a.nonce='';a.src='/cdn-cgi/challenge-platform/scripts/jsd/main.js';document.getElementsByTagName('head')[0].appendChild(a);";b.getElementsByTagName('head')[0].appendChild(d)}}if(document.body){var a=document.createElement('iframe');a.height=1;a.width=1;a.style.position='absolute';a.style.top=0;a.style.left=0;a.style.border='none';a.style.visibility='hidden';document.body.appendChild(a);if('loading'!==document.readyState)c();else if(window.addEventListener)document.addEventListener('DOMContentLoaded',c);else{var e=document.onreadystatechange||function(){};document.onreadystatechange=function(b){e(b);'loading'!==document.readyState&&(document.onreadystatechange=e,c())}}}})();</script></body> </html>

Pages: 1 2 3 4 5 6 7 8 9 10