├── .gitignore ├── LICENSE ├── README.md ├── gdb-cheatsheet.pdf └── gdb-cheatsheet.tex /.gitignore: -------------------------------------------------------------------------------- 1 | ## Core latex/pdflatex auxiliary files: 2 | *.aux 3 | *.lof 4 | *.log 5 | *.lot 6 | *.fls 7 | *.out 8 | *.toc 9 | *.fmt 10 | *.fot 11 | *.cb 12 | *.cb2 13 | 14 | ## Intermediate documents: 15 | *.dvi 16 | *-converted-to.* 17 | # these rules might exclude image files for figures etc. 18 | # *.ps 19 | # *.eps 20 | # *.pdf 21 | 22 | ## Bibliography auxiliary files (bibtex/biblatex/biber): 23 | *.bbl 24 | *.bcf 25 | *.blg 26 | *-blx.aux 27 | *-blx.bib 28 | *.brf 29 | *.run.xml 30 | 31 | ## Build tool auxiliary files: 32 | *.fdb_latexmk 33 | *.synctex 34 | *.synctex.gz 35 | *.synctex.gz(busy) 36 | *.pdfsync 37 | 38 | ## Auxiliary and intermediate files from other packages: 39 | # algorithms 40 | *.alg 41 | *.loa 42 | 43 | # achemso 44 | acs-*.bib 45 | 46 | # amsthm 47 | *.thm 48 | 49 | # beamer 50 | *.nav 51 | *.snm 52 | *.vrb 53 | 54 | # cprotect 55 | *.cpt 56 | 57 | # fixme 58 | *.lox 59 | 60 | #(r)(e)ledmac/(r)(e)ledpar 61 | *.end 62 | *.?end 63 | *.[1-9] 64 | *.[1-9][0-9] 65 | *.[1-9][0-9][0-9] 66 | *.[1-9]R 67 | *.[1-9][0-9]R 68 | *.[1-9][0-9][0-9]R 69 | *.eledsec[1-9] 70 | *.eledsec[1-9]R 71 | *.eledsec[1-9][0-9] 72 | *.eledsec[1-9][0-9]R 73 | *.eledsec[1-9][0-9][0-9] 74 | *.eledsec[1-9][0-9][0-9]R 75 | 76 | # glossaries 77 | *.acn 78 | *.acr 79 | *.glg 80 | *.glo 81 | *.gls 82 | *.glsdefs 83 | 84 | # gnuplottex 85 | *-gnuplottex-* 86 | 87 | # hyperref 88 | *.brf 89 | 90 | # knitr 91 | *-concordance.tex 92 | # TODO Comment the next line if you want to keep your tikz graphics files 93 | *.tikz 94 | *-tikzDictionary 95 | 96 | # listings 97 | *.lol 98 | 99 | # makeidx 100 | *.idx 101 | *.ilg 102 | *.ind 103 | *.ist 104 | 105 | # minitoc 106 | *.maf 107 | *.mlf 108 | *.mlt 109 | *.mtc 110 | *.mtc[0-9] 111 | *.mtc[1-9][0-9] 112 | 113 | # minted 114 | _minted* 115 | *.pyg 116 | 117 | # morewrites 118 | *.mw 119 | 120 | # mylatexformat 121 | *.fmt 122 | 123 | # nomencl 124 | *.nlo 125 | 126 | # sagetex 127 | *.sagetex.sage 128 | *.sagetex.py 129 | *.sagetex.scmd 130 | 131 | # sympy 132 | *.sout 133 | *.sympy 134 | sympy-plots-for-*.tex/ 135 | 136 | # pdfcomment 137 | *.upa 138 | *.upb 139 | 140 | # pythontex 141 | *.pytxcode 142 | pythontex-files-*/ 143 | 144 | # thmtools 145 | *.loe 146 | 147 | # TikZ & PGF 148 | *.dpth 149 | *.md5 150 | *.auxlock 151 | 152 | # todonotes 153 | *.tdo 154 | 155 | # xindy 156 | *.xdy 157 | 158 | # xypic precompiled matrices 159 | *.xyc 160 | 161 | # endfloat 162 | *.ttt 163 | *.fff 164 | 165 | # Latexian 166 | TSWLatexianTemp* 167 | 168 | ## Editors: 169 | # WinEdt 170 | *.bak 171 | *.sav 172 | 173 | # Texpad 174 | .texpadtmp 175 | 176 | # Kile 177 | *.backup 178 | 179 | # KBibTeX 180 | *~[0-9]* 181 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | GNU GENERAL PUBLIC LICENSE 2 | Version 3, 29 June 2007 3 | 4 | Copyright (C) 2007 Free Software Foundation, Inc. 5 | Everyone is permitted to copy and distribute verbatim copies 6 | of this license document, but changing it is not allowed. 7 | 8 | Preamble 9 | 10 | The GNU General Public License is a free, copyleft license for 11 | software and other kinds of works. 12 | 13 | The licenses for most software and other practical works are designed 14 | to take away your freedom to share and change the works. By contrast, 15 | the GNU General Public License is intended to guarantee your freedom to 16 | share and change all versions of a program--to make sure it remains free 17 | software for all its users. We, the Free Software Foundation, use the 18 | GNU General Public License for most of our software; it applies also to 19 | any other work released this way by its authors. You can apply it to 20 | your programs, too. 21 | 22 | When we speak of free software, we are referring to freedom, not 23 | price. Our General Public Licenses are designed to make sure that you 24 | have the freedom to distribute copies of free software (and charge for 25 | them if you wish), that you receive source code or can get it if you 26 | want it, that you can change the software or use pieces of it in new 27 | free programs, and that you know you can do these things. 28 | 29 | To protect your rights, we need to prevent others from denying you 30 | these rights or asking you to surrender the rights. Therefore, you have 31 | certain responsibilities if you distribute copies of the software, or if 32 | you modify it: responsibilities to respect the freedom of others. 33 | 34 | For example, if you distribute copies of such a program, whether 35 | gratis or for a fee, you must pass on to the recipients the same 36 | freedoms that you received. You must make sure that they, too, receive 37 | or can get the source code. And you must show them these terms so they 38 | know their rights. 39 | 40 | Developers that use the GNU GPL protect your rights with two steps: 41 | (1) assert copyright on the software, and (2) offer you this License 42 | giving you legal permission to copy, distribute and/or modify it. 43 | 44 | For the developers' and authors' protection, the GPL clearly explains 45 | that there is no warranty for this free software. For both users' and 46 | authors' sake, the GPL requires that modified versions be marked as 47 | changed, so that their problems will not be attributed erroneously to 48 | authors of previous versions. 49 | 50 | Some devices are designed to deny users access to install or run 51 | modified versions of the software inside them, although the manufacturer 52 | can do so. This is fundamentally incompatible with the aim of 53 | protecting users' freedom to change the software. The systematic 54 | pattern of such abuse occurs in the area of products for individuals to 55 | use, which is precisely where it is most unacceptable. Therefore, we 56 | have designed this version of the GPL to prohibit the practice for those 57 | products. If such problems arise substantially in other domains, we 58 | stand ready to extend this provision to those domains in future versions 59 | of the GPL, as needed to protect the freedom of users. 60 | 61 | Finally, every program is threatened constantly by software patents. 62 | States should not allow patents to restrict development and use of 63 | software on general-purpose computers, but in those that do, we wish to 64 | avoid the special danger that patents applied to a free program could 65 | make it effectively proprietary. To prevent this, the GPL assures that 66 | patents cannot be used to render the program non-free. 67 | 68 | The precise terms and conditions for copying, distribution and 69 | modification follow. 70 | 71 | TERMS AND CONDITIONS 72 | 73 | 0. Definitions. 74 | 75 | "This License" refers to version 3 of the GNU General Public License. 76 | 77 | "Copyright" also means copyright-like laws that apply to other kinds of 78 | works, such as semiconductor masks. 79 | 80 | "The Program" refers to any copyrightable work licensed under this 81 | License. Each licensee is addressed as "you". "Licensees" and 82 | "recipients" may be individuals or organizations. 83 | 84 | To "modify" a work means to copy from or adapt all or part of the work 85 | in a fashion requiring copyright permission, other than the making of an 86 | exact copy. The resulting work is called a "modified version" of the 87 | earlier work or a work "based on" the earlier work. 88 | 89 | A "covered work" means either the unmodified Program or a work based 90 | on the Program. 91 | 92 | To "propagate" a work means to do anything with it that, without 93 | permission, would make you directly or secondarily liable for 94 | infringement under applicable copyright law, except executing it on a 95 | computer or modifying a private copy. Propagation includes copying, 96 | distribution (with or without modification), making available to the 97 | public, and in some countries other activities as well. 98 | 99 | To "convey" a work means any kind of propagation that enables other 100 | parties to make or receive copies. Mere interaction with a user through 101 | a computer network, with no transfer of a copy, is not conveying. 102 | 103 | An interactive user interface displays "Appropriate Legal Notices" 104 | to the extent that it includes a convenient and prominently visible 105 | feature that (1) displays an appropriate copyright notice, and (2) 106 | tells the user that there is no warranty for the work (except to the 107 | extent that warranties are provided), that licensees may convey the 108 | work under this License, and how to view a copy of this License. If 109 | the interface presents a list of user commands or options, such as a 110 | menu, a prominent item in the list meets this criterion. 111 | 112 | 1. Source Code. 113 | 114 | The "source code" for a work means the preferred form of the work 115 | for making modifications to it. "Object code" means any non-source 116 | form of a work. 117 | 118 | A "Standard Interface" means an interface that either is an official 119 | standard defined by a recognized standards body, or, in the case of 120 | interfaces specified for a particular programming language, one that 121 | is widely used among developers working in that language. 122 | 123 | The "System Libraries" of an executable work include anything, other 124 | than the work as a whole, that (a) is included in the normal form of 125 | packaging a Major Component, but which is not part of that Major 126 | Component, and (b) serves only to enable use of the work with that 127 | Major Component, or to implement a Standard Interface for which an 128 | implementation is available to the public in source code form. A 129 | "Major Component", in this context, means a major essential component 130 | (kernel, window system, and so on) of the specific operating system 131 | (if any) on which the executable work runs, or a compiler used to 132 | produce the work, or an object code interpreter used to run it. 133 | 134 | The "Corresponding Source" for a work in object code form means all 135 | the source code needed to generate, install, and (for an executable 136 | work) run the object code and to modify the work, including scripts to 137 | control those activities. However, it does not include the work's 138 | System Libraries, or general-purpose tools or generally available free 139 | programs which are used unmodified in performing those activities but 140 | which are not part of the work. For example, Corresponding Source 141 | includes interface definition files associated with source files for 142 | the work, and the source code for shared libraries and dynamically 143 | linked subprograms that the work is specifically designed to require, 144 | such as by intimate data communication or control flow between those 145 | subprograms and other parts of the work. 146 | 147 | The Corresponding Source need not include anything that users 148 | can regenerate automatically from other parts of the Corresponding 149 | Source. 150 | 151 | The Corresponding Source for a work in source code form is that 152 | same work. 153 | 154 | 2. Basic Permissions. 155 | 156 | All rights granted under this License are granted for the term of 157 | copyright on the Program, and are irrevocable provided the stated 158 | conditions are met. This License explicitly affirms your unlimited 159 | permission to run the unmodified Program. The output from running a 160 | covered work is covered by this License only if the output, given its 161 | content, constitutes a covered work. This License acknowledges your 162 | rights of fair use or other equivalent, as provided by copyright law. 163 | 164 | You may make, run and propagate covered works that you do not 165 | convey, without conditions so long as your license otherwise remains 166 | in force. You may convey covered works to others for the sole purpose 167 | of having them make modifications exclusively for you, or provide you 168 | with facilities for running those works, provided that you comply with 169 | the terms of this License in conveying all material for which you do 170 | not control copyright. Those thus making or running the covered works 171 | for you must do so exclusively on your behalf, under your direction 172 | and control, on terms that prohibit them from making any copies of 173 | your copyrighted material outside their relationship with you. 174 | 175 | Conveying under any other circumstances is permitted solely under 176 | the conditions stated below. Sublicensing is not allowed; section 10 177 | makes it unnecessary. 178 | 179 | 3. Protecting Users' Legal Rights From Anti-Circumvention Law. 180 | 181 | No covered work shall be deemed part of an effective technological 182 | measure under any applicable law fulfilling obligations under article 183 | 11 of the WIPO copyright treaty adopted on 20 December 1996, or 184 | similar laws prohibiting or restricting circumvention of such 185 | measures. 186 | 187 | When you convey a covered work, you waive any legal power to forbid 188 | circumvention of technological measures to the extent such circumvention 189 | is effected by exercising rights under this License with respect to 190 | the covered work, and you disclaim any intention to limit operation or 191 | modification of the work as a means of enforcing, against the work's 192 | users, your or third parties' legal rights to forbid circumvention of 193 | technological measures. 194 | 195 | 4. Conveying Verbatim Copies. 196 | 197 | You may convey verbatim copies of the Program's source code as you 198 | receive it, in any medium, provided that you conspicuously and 199 | appropriately publish on each copy an appropriate copyright notice; 200 | keep intact all notices stating that this License and any 201 | non-permissive terms added in accord with section 7 apply to the code; 202 | keep intact all notices of the absence of any warranty; and give all 203 | recipients a copy of this License along with the Program. 204 | 205 | You may charge any price or no price for each copy that you convey, 206 | and you may offer support or warranty protection for a fee. 207 | 208 | 5. Conveying Modified Source Versions. 209 | 210 | You may convey a work based on the Program, or the modifications to 211 | produce it from the Program, in the form of source code under the 212 | terms of section 4, provided that you also meet all of these conditions: 213 | 214 | a) The work must carry prominent notices stating that you modified 215 | it, and giving a relevant date. 216 | 217 | b) The work must carry prominent notices stating that it is 218 | released under this License and any conditions added under section 219 | 7. This requirement modifies the requirement in section 4 to 220 | "keep intact all notices". 221 | 222 | c) You must license the entire work, as a whole, under this 223 | License to anyone who comes into possession of a copy. This 224 | License will therefore apply, along with any applicable section 7 225 | additional terms, to the whole of the work, and all its parts, 226 | regardless of how they are packaged. This License gives no 227 | permission to license the work in any other way, but it does not 228 | invalidate such permission if you have separately received it. 229 | 230 | d) If the work has interactive user interfaces, each must display 231 | Appropriate Legal Notices; however, if the Program has interactive 232 | interfaces that do not display Appropriate Legal Notices, your 233 | work need not make them do so. 234 | 235 | A compilation of a covered work with other separate and independent 236 | works, which are not by their nature extensions of the covered work, 237 | and which are not combined with it such as to form a larger program, 238 | in or on a volume of a storage or distribution medium, is called an 239 | "aggregate" if the compilation and its resulting copyright are not 240 | used to limit the access or legal rights of the compilation's users 241 | beyond what the individual works permit. Inclusion of a covered work 242 | in an aggregate does not cause this License to apply to the other 243 | parts of the aggregate. 244 | 245 | 6. Conveying Non-Source Forms. 246 | 247 | You may convey a covered work in object code form under the terms 248 | of sections 4 and 5, provided that you also convey the 249 | machine-readable Corresponding Source under the terms of this License, 250 | in one of these ways: 251 | 252 | a) Convey the object code in, or embodied in, a physical product 253 | (including a physical distribution medium), accompanied by the 254 | Corresponding Source fixed on a durable physical medium 255 | customarily used for software interchange. 256 | 257 | b) Convey the object code in, or embodied in, a physical product 258 | (including a physical distribution medium), accompanied by a 259 | written offer, valid for at least three years and valid for as 260 | long as you offer spare parts or customer support for that product 261 | model, to give anyone who possesses the object code either (1) a 262 | copy of the Corresponding Source for all the software in the 263 | product that is covered by this License, on a durable physical 264 | medium customarily used for software interchange, for a price no 265 | more than your reasonable cost of physically performing this 266 | conveying of source, or (2) access to copy the 267 | Corresponding Source from a network server at no charge. 268 | 269 | c) Convey individual copies of the object code with a copy of the 270 | written offer to provide the Corresponding Source. This 271 | alternative is allowed only occasionally and noncommercially, and 272 | only if you received the object code with such an offer, in accord 273 | with subsection 6b. 274 | 275 | d) Convey the object code by offering access from a designated 276 | place (gratis or for a charge), and offer equivalent access to the 277 | Corresponding Source in the same way through the same place at no 278 | further charge. You need not require recipients to copy the 279 | Corresponding Source along with the object code. If the place to 280 | copy the object code is a network server, the Corresponding Source 281 | may be on a different server (operated by you or a third party) 282 | that supports equivalent copying facilities, provided you maintain 283 | clear directions next to the object code saying where to find the 284 | Corresponding Source. Regardless of what server hosts the 285 | Corresponding Source, you remain obligated to ensure that it is 286 | available for as long as needed to satisfy these requirements. 287 | 288 | e) Convey the object code using peer-to-peer transmission, provided 289 | you inform other peers where the object code and Corresponding 290 | Source of the work are being offered to the general public at no 291 | charge under subsection 6d. 292 | 293 | A separable portion of the object code, whose source code is excluded 294 | from the Corresponding Source as a System Library, need not be 295 | included in conveying the object code work. 296 | 297 | A "User Product" is either (1) a "consumer product", which means any 298 | tangible personal property which is normally used for personal, family, 299 | or household purposes, or (2) anything designed or sold for incorporation 300 | into a dwelling. In determining whether a product is a consumer product, 301 | doubtful cases shall be resolved in favor of coverage. For a particular 302 | product received by a particular user, "normally used" refers to a 303 | typical or common use of that class of product, regardless of the status 304 | of the particular user or of the way in which the particular user 305 | actually uses, or expects or is expected to use, the product. A product 306 | is a consumer product regardless of whether the product has substantial 307 | commercial, industrial or non-consumer uses, unless such uses represent 308 | the only significant mode of use of the product. 309 | 310 | "Installation Information" for a User Product means any methods, 311 | procedures, authorization keys, or other information required to install 312 | and execute modified versions of a covered work in that User Product from 313 | a modified version of its Corresponding Source. The information must 314 | suffice to ensure that the continued functioning of the modified object 315 | code is in no case prevented or interfered with solely because 316 | modification has been made. 317 | 318 | If you convey an object code work under this section in, or with, or 319 | specifically for use in, a User Product, and the conveying occurs as 320 | part of a transaction in which the right of possession and use of the 321 | User Product is transferred to the recipient in perpetuity or for a 322 | fixed term (regardless of how the transaction is characterized), the 323 | Corresponding Source conveyed under this section must be accompanied 324 | by the Installation Information. But this requirement does not apply 325 | if neither you nor any third party retains the ability to install 326 | modified object code on the User Product (for example, the work has 327 | been installed in ROM). 328 | 329 | The requirement to provide Installation Information does not include a 330 | requirement to continue to provide support service, warranty, or updates 331 | for a work that has been modified or installed by the recipient, or for 332 | the User Product in which it has been modified or installed. Access to a 333 | network may be denied when the modification itself materially and 334 | adversely affects the operation of the network or violates the rules and 335 | protocols for communication across the network. 336 | 337 | Corresponding Source conveyed, and Installation Information provided, 338 | in accord with this section must be in a format that is publicly 339 | documented (and with an implementation available to the public in 340 | source code form), and must require no special password or key for 341 | unpacking, reading or copying. 342 | 343 | 7. Additional Terms. 344 | 345 | "Additional permissions" are terms that supplement the terms of this 346 | License by making exceptions from one or more of its conditions. 347 | Additional permissions that are applicable to the entire Program shall 348 | be treated as though they were included in this License, to the extent 349 | that they are valid under applicable law. If additional permissions 350 | apply only to part of the Program, that part may be used separately 351 | under those permissions, but the entire Program remains governed by 352 | this License without regard to the additional permissions. 353 | 354 | When you convey a copy of a covered work, you may at your option 355 | remove any additional permissions from that copy, or from any part of 356 | it. (Additional permissions may be written to require their own 357 | removal in certain cases when you modify the work.) You may place 358 | additional permissions on material, added by you to a covered work, 359 | for which you have or can give appropriate copyright permission. 360 | 361 | Notwithstanding any other provision of this License, for material you 362 | add to a covered work, you may (if authorized by the copyright holders of 363 | that material) supplement the terms of this License with terms: 364 | 365 | a) Disclaiming warranty or limiting liability differently from the 366 | terms of sections 15 and 16 of this License; or 367 | 368 | b) Requiring preservation of specified reasonable legal notices or 369 | author attributions in that material or in the Appropriate Legal 370 | Notices displayed by works containing it; or 371 | 372 | c) Prohibiting misrepresentation of the origin of that material, or 373 | requiring that modified versions of such material be marked in 374 | reasonable ways as different from the original version; or 375 | 376 | d) Limiting the use for publicity purposes of names of licensors or 377 | authors of the material; or 378 | 379 | e) Declining to grant rights under trademark law for use of some 380 | trade names, trademarks, or service marks; or 381 | 382 | f) Requiring indemnification of licensors and authors of that 383 | material by anyone who conveys the material (or modified versions of 384 | it) with contractual assumptions of liability to the recipient, for 385 | any liability that these contractual assumptions directly impose on 386 | those licensors and authors. 387 | 388 | All other non-permissive additional terms are considered "further 389 | restrictions" within the meaning of section 10. If the Program as you 390 | received it, or any part of it, contains a notice stating that it is 391 | governed by this License along with a term that is a further 392 | restriction, you may remove that term. If a license document contains 393 | a further restriction but permits relicensing or conveying under this 394 | License, you may add to a covered work material governed by the terms 395 | of that license document, provided that the further restriction does 396 | not survive such relicensing or conveying. 397 | 398 | If you add terms to a covered work in accord with this section, you 399 | must place, in the relevant source files, a statement of the 400 | additional terms that apply to those files, or a notice indicating 401 | where to find the applicable terms. 402 | 403 | Additional terms, permissive or non-permissive, may be stated in the 404 | form of a separately written license, or stated as exceptions; 405 | the above requirements apply either way. 406 | 407 | 8. Termination. 408 | 409 | You may not propagate or modify a covered work except as expressly 410 | provided under this License. Any attempt otherwise to propagate or 411 | modify it is void, and will automatically terminate your rights under 412 | this License (including any patent licenses granted under the third 413 | paragraph of section 11). 414 | 415 | However, if you cease all violation of this License, then your 416 | license from a particular copyright holder is reinstated (a) 417 | provisionally, unless and until the copyright holder explicitly and 418 | finally terminates your license, and (b) permanently, if the copyright 419 | holder fails to notify you of the violation by some reasonable means 420 | prior to 60 days after the cessation. 421 | 422 | Moreover, your license from a particular copyright holder is 423 | reinstated permanently if the copyright holder notifies you of the 424 | violation by some reasonable means, this is the first time you have 425 | received notice of violation of this License (for any work) from that 426 | copyright holder, and you cure the violation prior to 30 days after 427 | your receipt of the notice. 428 | 429 | Termination of your rights under this section does not terminate the 430 | licenses of parties who have received copies or rights from you under 431 | this License. If your rights have been terminated and not permanently 432 | reinstated, you do not qualify to receive new licenses for the same 433 | material under section 10. 434 | 435 | 9. Acceptance Not Required for Having Copies. 436 | 437 | You are not required to accept this License in order to receive or 438 | run a copy of the Program. Ancillary propagation of a covered work 439 | occurring solely as a consequence of using peer-to-peer transmission 440 | to receive a copy likewise does not require acceptance. However, 441 | nothing other than this License grants you permission to propagate or 442 | modify any covered work. These actions infringe copyright if you do 443 | not accept this License. Therefore, by modifying or propagating a 444 | covered work, you indicate your acceptance of this License to do so. 445 | 446 | 10. Automatic Licensing of Downstream Recipients. 447 | 448 | Each time you convey a covered work, the recipient automatically 449 | receives a license from the original licensors, to run, modify and 450 | propagate that work, subject to this License. You are not responsible 451 | for enforcing compliance by third parties with this License. 452 | 453 | An "entity transaction" is a transaction transferring control of an 454 | organization, or substantially all assets of one, or subdividing an 455 | organization, or merging organizations. If propagation of a covered 456 | work results from an entity transaction, each party to that 457 | transaction who receives a copy of the work also receives whatever 458 | licenses to the work the party's predecessor in interest had or could 459 | give under the previous paragraph, plus a right to possession of the 460 | Corresponding Source of the work from the predecessor in interest, if 461 | the predecessor has it or can get it with reasonable efforts. 462 | 463 | You may not impose any further restrictions on the exercise of the 464 | rights granted or affirmed under this License. For example, you may 465 | not impose a license fee, royalty, or other charge for exercise of 466 | rights granted under this License, and you may not initiate litigation 467 | (including a cross-claim or counterclaim in a lawsuit) alleging that 468 | any patent claim is infringed by making, using, selling, offering for 469 | sale, or importing the Program or any portion of it. 470 | 471 | 11. Patents. 472 | 473 | A "contributor" is a copyright holder who authorizes use under this 474 | License of the Program or a work on which the Program is based. The 475 | work thus licensed is called the contributor's "contributor version". 476 | 477 | A contributor's "essential patent claims" are all patent claims 478 | owned or controlled by the contributor, whether already acquired or 479 | hereafter acquired, that would be infringed by some manner, permitted 480 | by this License, of making, using, or selling its contributor version, 481 | but do not include claims that would be infringed only as a 482 | consequence of further modification of the contributor version. For 483 | purposes of this definition, "control" includes the right to grant 484 | patent sublicenses in a manner consistent with the requirements of 485 | this License. 486 | 487 | Each contributor grants you a non-exclusive, worldwide, royalty-free 488 | patent license under the contributor's essential patent claims, to 489 | make, use, sell, offer for sale, import and otherwise run, modify and 490 | propagate the contents of its contributor version. 491 | 492 | In the following three paragraphs, a "patent license" is any express 493 | agreement or commitment, however denominated, not to enforce a patent 494 | (such as an express permission to practice a patent or covenant not to 495 | sue for patent infringement). To "grant" such a patent license to a 496 | party means to make such an agreement or commitment not to enforce a 497 | patent against the party. 498 | 499 | If you convey a covered work, knowingly relying on a patent license, 500 | and the Corresponding Source of the work is not available for anyone 501 | to copy, free of charge and under the terms of this License, through a 502 | publicly available network server or other readily accessible means, 503 | then you must either (1) cause the Corresponding Source to be so 504 | available, or (2) arrange to deprive yourself of the benefit of the 505 | patent license for this particular work, or (3) arrange, in a manner 506 | consistent with the requirements of this License, to extend the patent 507 | license to downstream recipients. "Knowingly relying" means you have 508 | actual knowledge that, but for the patent license, your conveying the 509 | covered work in a country, or your recipient's use of the covered work 510 | in a country, would infringe one or more identifiable patents in that 511 | country that you have reason to believe are valid. 512 | 513 | If, pursuant to or in connection with a single transaction or 514 | arrangement, you convey, or propagate by procuring conveyance of, a 515 | covered work, and grant a patent license to some of the parties 516 | receiving the covered work authorizing them to use, propagate, modify 517 | or convey a specific copy of the covered work, then the patent license 518 | you grant is automatically extended to all recipients of the covered 519 | work and works based on it. 520 | 521 | A patent license is "discriminatory" if it does not include within 522 | the scope of its coverage, prohibits the exercise of, or is 523 | conditioned on the non-exercise of one or more of the rights that are 524 | specifically granted under this License. You may not convey a covered 525 | work if you are a party to an arrangement with a third party that is 526 | in the business of distributing software, under which you make payment 527 | to the third party based on the extent of your activity of conveying 528 | the work, and under which the third party grants, to any of the 529 | parties who would receive the covered work from you, a discriminatory 530 | patent license (a) in connection with copies of the covered work 531 | conveyed by you (or copies made from those copies), or (b) primarily 532 | for and in connection with specific products or compilations that 533 | contain the covered work, unless you entered into that arrangement, 534 | or that patent license was granted, prior to 28 March 2007. 535 | 536 | Nothing in this License shall be construed as excluding or limiting 537 | any implied license or other defenses to infringement that may 538 | otherwise be available to you under applicable patent law. 539 | 540 | 12. No Surrender of Others' Freedom. 541 | 542 | If conditions are imposed on you (whether by court order, agreement or 543 | otherwise) that contradict the conditions of this License, they do not 544 | excuse you from the conditions of this License. If you cannot convey a 545 | covered work so as to satisfy simultaneously your obligations under this 546 | License and any other pertinent obligations, then as a consequence you may 547 | not convey it at all. For example, if you agree to terms that obligate you 548 | to collect a royalty for further conveying from those to whom you convey 549 | the Program, the only way you could satisfy both those terms and this 550 | License would be to refrain entirely from conveying the Program. 551 | 552 | 13. Use with the GNU Affero General Public License. 553 | 554 | Notwithstanding any other provision of this License, you have 555 | permission to link or combine any covered work with a work licensed 556 | under version 3 of the GNU Affero General Public License into a single 557 | combined work, and to convey the resulting work. The terms of this 558 | License will continue to apply to the part which is the covered work, 559 | but the special requirements of the GNU Affero General Public License, 560 | section 13, concerning interaction through a network will apply to the 561 | combination as such. 562 | 563 | 14. Revised Versions of this License. 564 | 565 | The Free Software Foundation may publish revised and/or new versions of 566 | the GNU General Public License from time to time. Such new versions will 567 | be similar in spirit to the present version, but may differ in detail to 568 | address new problems or concerns. 569 | 570 | Each version is given a distinguishing version number. If the 571 | Program specifies that a certain numbered version of the GNU General 572 | Public License "or any later version" applies to it, you have the 573 | option of following the terms and conditions either of that numbered 574 | version or of any later version published by the Free Software 575 | Foundation. If the Program does not specify a version number of the 576 | GNU General Public License, you may choose any version ever published 577 | by the Free Software Foundation. 578 | 579 | If the Program specifies that a proxy can decide which future 580 | versions of the GNU General Public License can be used, that proxy's 581 | public statement of acceptance of a version permanently authorizes you 582 | to choose that version for the Program. 583 | 584 | Later license versions may give you additional or different 585 | permissions. However, no additional obligations are imposed on any 586 | author or copyright holder as a result of your choosing to follow a 587 | later version. 588 | 589 | 15. Disclaimer of Warranty. 590 | 591 | THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY 592 | APPLICABLE LAW. EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT 593 | HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY 594 | OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, 595 | THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR 596 | PURPOSE. THE ENTIRE RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM 597 | IS WITH YOU. SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF 598 | ALL NECESSARY SERVICING, REPAIR OR CORRECTION. 599 | 600 | 16. Limitation of Liability. 601 | 602 | IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING 603 | WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES AND/OR CONVEYS 604 | THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, INCLUDING ANY 605 | GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING OUT OF THE 606 | USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF 607 | DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD 608 | PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER PROGRAMS), 609 | EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE POSSIBILITY OF 610 | SUCH DAMAGES. 611 | 612 | 17. Interpretation of Sections 15 and 16. 613 | 614 | If the disclaimer of warranty and limitation of liability provided 615 | above cannot be given local legal effect according to their terms, 616 | reviewing courts shall apply local law that most closely approximates 617 | an absolute waiver of all civil liability in connection with the 618 | Program, unless a warranty or assumption of liability accompanies a 619 | copy of the Program in return for a fee. 620 | 621 | END OF TERMS AND CONDITIONS 622 | 623 | How to Apply These Terms to Your New Programs 624 | 625 | If you develop a new program, and you want it to be of the greatest 626 | possible use to the public, the best way to achieve this is to make it 627 | free software which everyone can redistribute and change under these terms. 628 | 629 | To do so, attach the following notices to the program. It is safest 630 | to attach them to the start of each source file to most effectively 631 | state the exclusion of warranty; and each file should have at least 632 | the "copyright" line and a pointer to where the full notice is found. 633 | 634 | {one line to give the program's name and a brief idea of what it does.} 635 | Copyright (C) {year} {name of author} 636 | 637 | This program is free software: you can redistribute it and/or modify 638 | it under the terms of the GNU General Public License as published by 639 | the Free Software Foundation, either version 3 of the License, or 640 | (at your option) any later version. 641 | 642 | This program is distributed in the hope that it will be useful, 643 | but WITHOUT ANY WARRANTY; without even the implied warranty of 644 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 645 | GNU General Public License for more details. 646 | 647 | You should have received a copy of the GNU General Public License 648 | along with this program. If not, see . 649 | 650 | Also add information on how to contact you by electronic and paper mail. 651 | 652 | If the program does terminal interaction, make it output a short 653 | notice like this when it starts in an interactive mode: 654 | 655 | {project} Copyright (C) {year} {fullname} 656 | This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'. 657 | This is free software, and you are welcome to redistribute it 658 | under certain conditions; type `show c' for details. 659 | 660 | The hypothetical commands `show w' and `show c' should show the appropriate 661 | parts of the General Public License. Of course, your program's commands 662 | might be different; for a GUI interface, you would use an "about box". 663 | 664 | You should also get your employer (if you work as a programmer) or school, 665 | if any, to sign a "copyright disclaimer" for the program, if necessary. 666 | For more information on this, and how to apply and follow the GNU GPL, see 667 | . 668 | 669 | The GNU General Public License does not permit incorporating your program 670 | into proprietary programs. If your program is a subroutine library, you 671 | may consider it more useful to permit linking proprietary applications with 672 | the library. If this is what you want to do, use the GNU Lesser General 673 | Public License instead of this License. But first, please read 674 | . 675 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # gdb-cheatsheet 2 | 3 | Compile with: pdftex gdb-cheatsheet.tex 4 | 5 | -------------------------------------------------------------------------------- /gdb-cheatsheet.pdf: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/zxgio/gdb-cheatsheet/6797cbb4f75ca64f55a0c88878fb2e1a055b95bb/gdb-cheatsheet.pdf -------------------------------------------------------------------------------- /gdb-cheatsheet.tex: -------------------------------------------------------------------------------- 1 | %%%%%%%%%%%%%%%% gdb-refcard.tex %%%%%%%%%%%%%%%% 2 | %This file is TeX source for a reference card describing GDB, the GNU debugger. 3 | %Copyright (C) 1991-2016 Free Software Foundation, Inc. 4 | %Permission is granted to make and distribute verbatim copies of 5 | %this reference provided the copyright notices and permission notices 6 | %are preserved on all copies. 7 | % 8 | %TeX markup is a programming language; accordingly this file is source 9 | %for a program to generate a reference. 10 | % 11 | %This program is free software; you can redistribute it and/or modify 12 | %it under the terms of the GNU General Public License as published by 13 | %the Free Software Foundation; either version 3, or (at your option) 14 | %any later version. 15 | % 16 | %This program is distributed in the hope that it will be useful, but 17 | %WITHOUT ANY WARRANTY; without even the implied warranty of 18 | %MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 19 | %General Public License for more details. 20 | % 21 | %You should have received a copy of the GNU General Public License 22 | %along with this program. If not, see . 23 | % 24 | %You can contact the maintainer at: doc@cygnus.com 25 | % 26 | % Documentation Department 27 | % Cygnus Solutions 28 | % 1325 Chesapeake Terrace 29 | % Sunnyvale, CA 94089 USA 30 | % 31 | % +1 800 CYGNUS-1 32 | % 33 | % 34 | % 15-MAR-2017 Giovanni Lagorio 35 | % This version includes more commands that seem useful to reverse 36 | % engineer binaries.(at the expense of other commands, since the 37 | % space is finite ;) ) 38 | % 39 | % 40 | % 22-AUG-1993 Andreas Vogel 41 | % 42 | % Modifications made in order to handle different papersizes correctly. 43 | % You only have to set the total width and height of the paper, the 44 | % horizontal and vertical margin space measured from *paper edge* 45 | % and the interline and interspec spacing. 46 | % In order to support a new papersize, you have to fiddle with the 47 | % latter four dimensions. Just try out a few values. 48 | % All other values will be computed at process time so it should be 49 | % quite easy to support different paper sizes - only four values to 50 | % guess :-) 51 | % 52 | % To find the configuration places, just search for the string 53 | % "CONFIGURATION". 54 | % 55 | % Andreas Vogel (av@ssw.de) 56 | % 57 | % 58 | % 59 | % Uncomment the following `magnification' command if you want to print 60 | % out in a larger font. Caution! You may need larger paper. You had 61 | % best avoid using 3-column output if you try this. See the ``Three 62 | % column format'' section below if you want to print in three column 63 | % format. 64 | % 65 | %\magnification=\magstep 1 66 | % 67 | % NOTE ON INTENTIONAL OMISSIONS: This reference card includes most GDB 68 | % commands, but due to space constraints there are some things I chose 69 | % to omit. In general, not all synonyms for commands are covered, nor 70 | % all variations of a command. 71 | % The GDB-under-Emacs section omits gdb-mode functions without default 72 | % keybindings. GDB startup options are not described. 73 | % set print sevenbit-strings omitted. 74 | % printsyms, printpsyms, omitted since they're for GDB maintenance primarily 75 | % share omitted due to obsolescence 76 | % set check range/type omitted at least til code is in GDB. 77 | % 78 | %-------------------- Three column format ----------------------- 79 | 80 | %%%% --- To disable three column format, comment out this entire section 81 | 82 | % Three-column format for landscape printing 83 | 84 | %-------- Papersize defs: 85 | 86 | \newdimen\totalwidth \newdimen\totalheight 87 | \newdimen\hmargin \newdimen\vmargin 88 | \newdimen\secskip \newdimen\lskip 89 | \newdimen\barwidth \newdimen\barheight 90 | \newdimen\intersecwidth 91 | 92 | %% 93 | %% START CONFIGURATION - PAPERSIZE DEFINITIONS 94 | %------- Papersize params: 95 | %% A4 96 | %% 97 | \totalwidth=11.7in % total width of paper 98 | \totalheight=8.27in % total height of paper 99 | \hmargin=.25in % horizontal margin width 100 | \vmargin=.25in % vertical margin width 101 | \secskip=1pc % space between refcard secs 102 | \lskip=2pt % extra skip between \sec entries 103 | \ifx\pdfoutput\undefined\else % check if we are using pdfTeX 104 | \pdfpagewidth=\totalwidth % width of paper in pdf output 105 | \pdfpageheight=\totalheight % height of paper in pdf output 106 | \fi 107 | %------- end papersize params 108 | %% 109 | %% change according to personal taste, not papersize dependent 110 | %% 111 | \barwidth=.1pt % width of the cropmark bar 112 | \barheight=2pt % height of the cropmark bar 113 | \intersecwidth=0.5em % width between \itmwid and \dfnwid 114 | %% 115 | %% END CONFIGURATION - PAPERSIZE DEFINITIONS 116 | %% 117 | 118 | %% 119 | %% values to be computed - nothing to configure 120 | %% 121 | \newdimen\fullhsize % width of area without margins 122 | \newdimen\itmwid % width of item column 123 | \newdimen\dfnwid % width of definition column 124 | \newdimen\temp % only for temporary use 125 | 126 | %% 127 | %% adjust the offsets so the margins are measured *from paper edge* 128 | %% 129 | \hoffset=-1in \advance \hoffset by \hmargin 130 | \voffset=-1in \advance \voffset by \vmargin 131 | 132 | %% 133 | %% fullhsize = totalwidth - (2 * hmargin) 134 | %% 135 | \fullhsize=\totalwidth 136 | \temp=\hmargin \multiply \temp by 2 \advance \fullhsize by -\temp 137 | 138 | %% 139 | %% hsize = (fullhsize - (4 * hmargin) - (2 * barwidth)) / 3 140 | %% 141 | \hsize=\fullhsize 142 | \temp=\hmargin \multiply \temp by 4 \advance \hsize by -\temp 143 | \temp=\barwidth \multiply \temp by 2 \advance \hsize by -\temp 144 | \divide \hsize by 3 145 | 146 | %% 147 | %% vsize = totalheight - (2 * vmargin) 148 | %% 149 | \vsize=\totalheight 150 | \temp=\vmargin \multiply \temp by 2 \advance \vsize by -\temp 151 | 152 | %% 153 | %% itmwid = (hsize - intersecwidth) * 1/3 154 | %% dfnwid = (hsize - intersecwidth) * 2/3 155 | %% 156 | \temp=\hsize \advance \temp by -\intersecwidth \divide \temp by 3 157 | \itmwid=\temp 158 | \dfnwid=\hsize \advance \dfnwid by -\itmwid 159 | 160 | %-------- end papersize defs 161 | 162 | 163 | \def\fulline{\hbox to \fullhsize} 164 | \let\lcr=L \newbox\leftcolumn\newbox\centercolumn 165 | \output={\if L\lcr 166 | \global\setbox\leftcolumn=\columnbox \global\let\lcr=C 167 | \else 168 | \if C\lcr 169 | \global\setbox\centercolumn=\columnbox \global\let\lcr=R 170 | \else \tripleformat \global\let\lcr=L 171 | \fi 172 | \fi 173 | % \ifnum\outputpenalty>-20000 \else\dosupereject\fi 174 | } 175 | 176 | %% 177 | %% START CONFIGURATION - ALTERNATIVE FOLDING GUIDES 178 | %% 179 | %% For NO printed folding guide, 180 | %% comment out other \def\vdecor's and uncomment: 181 | 182 | %\def\vdecor{\hskip\hmargin plus1fil\hskip\barwidth plus1fil\hskip\hmargin plus1fil} 183 | 184 | %% For SOLID LINE folding guide, 185 | %% comment out other \def\vdecor's and uncomment: 186 | 187 | \def\vdecor{\hskip\hmargin plus1fil \vrule width \barwidth \hskip\hmargin plus1fil} 188 | 189 | %% For SMALL MARKS NEAR TOP AND BOTTOM as folding guide, 190 | %% comment out other \def\vdecor's and uncomment: 191 | 192 | %\def\vdecor{\hskip\hmargin plus1fil 193 | %\vbox to \vsize{\hbox to \barwidth{\vrule height\barheight width\barwidth}\vfill 194 | %\hbox to \barwidth{\vrule height\barheight width\barwidth}}%THIS PERCENT SIGN IS ESSENTIAL 195 | %\hskip\hmargin plus1fil} 196 | 197 | %% 198 | %% END CONFIGURATION - ALTERNATIVES FOR FOLDING GUIDES 199 | %% 200 | 201 | \def\tripleformat{\shipout\vbox{\fulline{\box\leftcolumn\vdecor 202 | \box\centercolumn\vdecor 203 | \columnbox} 204 | } 205 | \advancepageno} 206 | \def\columnbox{\leftline{\pagebody}} 207 | \def\bye{\par\vfill 208 | \supereject 209 | \if R\lcr \null\vfill\eject\fi 210 | \end} 211 | 212 | %-------------------- end three column format ----------------------- 213 | 214 | %-------------------- Computer Modern font defs: -------------------- 215 | \font\bbf=cmbx10 216 | \font\vbbf=cmbx12 217 | \font\smrm=cmr6 218 | \font\brm=cmr10 219 | \font\rm=cmr7 220 | \font\it=cmti7 221 | \font\tt=cmtt8 222 | %-------------------- end font defs --------------------------------- 223 | 224 | % 225 | \hyphenpenalty=5000\tolerance=2000\raggedright\raggedbottom 226 | \normalbaselineskip=9pt\baselineskip=9pt 227 | % 228 | \parindent=0pt 229 | \parskip=0pt 230 | \footline={\vbox to0pt{\hss}} 231 | % 232 | \def\ctl#1{{\tt C-#1}} 233 | \def\opt#1{{\brm[{\rm #1}]}} 234 | \def\xtra#1{\noalign{\smallskip{\tt#1}}} 235 | % 236 | \long\def\sec#1;#2\endsec{\vskip \secskip 237 | \halign{% 238 | %COL 1 (of halign): 239 | \vtop{\hsize=\itmwid\tt 240 | ##\par\vskip \lskip }\hfil 241 | %COL 2 (of halign): 242 | &\vtop{\hsize=\dfnwid\hangafter=1\hangindent=\intersecwidth 243 | \rm ##\par\vskip \lskip}\cr 244 | %Tail of \long\def fills in halign body with \sec args: 245 | \noalign{{\bbf #1}\vskip \lskip} 246 | #2 247 | } 248 | } 249 | 250 | \long\def\lsec#1;#2\endlsec{\vskip \secskip 251 | \halign{% 252 | %COL 1 (of halign): 253 | \vtop{\hsize=\dfnwid\tt 254 | ##\par\vskip \lskip }\hfil 255 | %COL 2 (of halign): 256 | &\vtop{\hsize=\itmwid\hangafter=1\hangindent=\intersecwidth 257 | \rm ##\par\vskip \lskip}\cr 258 | %Tail of \long\def fills in halign body with \sec args: 259 | \noalign{{\bbf #1}\vskip \lskip} 260 | #2 261 | } 262 | } 263 | 264 | {\vbbf gdb cheat-sheet for reversing} % \hfil{\smrm GDB Version 5}\qquad 265 | 266 | %\sec Essential Commands; 267 | %gdb {\it program} \opt{{\it core}}&debug {\it program} \opt{using 268 | %coredump {\it core}}\cr 269 | %b \opt{\it file\tt:}{\it function}&set breakpoint at {\it function} \opt{in \it file}\cr 270 | %run \opt{{\it arglist}}&start your program \opt{with {\it arglist}}\cr 271 | %bt& backtrace: display program stack\cr 272 | %p {\it expr}&display the value of an expression\cr 273 | %c &continue running your program\cr 274 | %n &next line, stepping over function calls\cr 275 | %s &next line, stepping into function calls\cr 276 | %\endsec 277 | 278 | \sec Starting GDB; 279 | gdb&start GDB, with no debugging files\cr 280 | gdb {\it program}&begin debugging {\it program}\cr 281 | gdb --args {\it prg args}&begin debugging {\it prg args}\cr 282 | gdb {\it program pid}&begin debugging running process {\it pid}\cr 283 | gdb {\it program core}&debug coredump {\it core} produced by {\it 284 | program}\cr 285 | %gdb --help&describe command line options\cr 286 | \cr 287 | --silent & run silently (AKA: {\tt --quiet} or {\tt -q}) \cr 288 | -ix {\it file} & Execute command from {\it file} before loading \cr 289 | & the inferior (AKA: {\tt --init-command})\cr 290 | -iex {\it cmd} & Execute command {\it cmd} before loading \cr 291 | & the inferior (AKA: {\tt --init-eval-command})\cr 292 | \endsec 293 | 294 | \sec Stopping GDB; 295 | quit&exit GDB; also {\tt q} or {\tt EOF} (eg \ctl{d})\cr 296 | INTERRUPT&(eg \ctl{c}) terminate current command, or send to running process\cr 297 | \endsec 298 | 299 | \sec Getting Help; 300 | help&list classes of commands\cr 301 | help {\it class}&one-line descriptions for commands in {\it class}\cr 302 | help {\it command}&describe {\it command}\cr 303 | apropos {\it re} & search for the regexp {\it re} inside documentation\cr 304 | \endsec 305 | 306 | \sec Executing your Program; 307 | r[un] {\it arglist}&start your program with {\it arglist}\cr 308 | r[un] &start program with current argument list\cr 309 | r[un] $\ldots$ <{\it inf} >{\it outf}&start your program with I/O redirected\cr 310 | kill&kill running program\cr 311 | set args {\it arglist}&specify {\it arglist} for next 312 | {\tt run}\cr 313 | set args&specify empty argument list\cr 314 | show args&display argument list\cr 315 | tty {\it dev}&use {\it dev} as stdin and stdout for next {\tt run}\cr 316 | \cr 317 | set startup-with-shell [on|off] &Use the shell to run the program? \cr 318 | set exec-wrapper {\it w} & use the wrapper {\it w} to launch programs; e.g.: \cr 319 | unset exec-wrapper & {\tt set exec-wrapper env 'LD\_PRELOAD=X.so'}\cr 320 | \cr 321 | show env&show all environment variables\cr 322 | show env {\it var}&show value of environment variable {\it var}\cr 323 | set env {\it var} {\it string}&set environment variable {\it var}\cr 324 | unset env {\it var}&remove {\it var} from environment\cr 325 | \cr 326 | set disable-randomization [on|off] & disable ASLR? \cr 327 | set follow-fork-mode {\it mode} & {\it mode}={\tt parent|child} \cr 328 | set detach-on-fork [on|off]& detach one of the processes after a fork? \cr 329 | \endsec 330 | 331 | \vfill 332 | \line{\smrm \opt{ } surround optional arguments \hfill $\ldots$ show 333 | one or more arguments} 334 | \vskip\baselineskip 335 | \centerline{\smrm \copyright 2017 by zxgio \qquad Permissions on back} 336 | %\centerline{\smrm \copyright 1998-2016 Free Software Foundation, Inc.\qquad Permissions on back} 337 | \eject 338 | \sec Breakpoints and Watchpoints; 339 | break \opt{\it file\tt:}{\it line}\par 340 | b \opt{\it file\tt:}{\it line}&set breakpoint at {\it line} number \opt{in \it file}\par 341 | eg:\quad{\tt break main.c:37}\quad\cr 342 | break \opt{\it file\tt:}{\it func}&set breakpoint at {\it 343 | func} \opt{in \it file}\cr 344 | break [+|-]{\it offset} & set break at {\it offset} lines from current stop\cr 345 | break *{\it addr}&set breakpoint at address {\it addr}\cr 346 | break&set breakpoint at next instruction\cr 347 | break $\ldots$ if {\it expr}&break conditionally on nonzero {\it expr}\cr 348 | cond {\it n} \opt{\it expr}&new conditional expression on breakpoint 349 | {\it n}; make unconditional if no {\it expr}\cr 350 | tbreak $\ldots$&temporary break; disable when reached\cr 351 | hbreak $\ldots$&as {\tt break}, but hardware-assisted\cr 352 | rbreak \opt{\it file\tt:}{\it regex}&break on all functions matching {\it 353 | regex} \opt{in \it file}\cr 354 | watch {\it expr}&set a watchpoint for expression {\it expr}\cr 355 | rwatch $\ldots$ & read watchpoint \cr 356 | awatch $\ldots$ & read/write (i.e., access) watchpoint \cr 357 | catch {\it event}&break at {\it event}, which may be {\tt catch}, {\tt throw}, 358 | {\tt exec}, {\tt fork}, {\tt vfork}, {\tt load}, or {\tt unload}.\cr 359 | \cr 360 | info break&show defined breakpoints\cr 361 | info watch&show defined watchpoints\cr 362 | \cr 363 | clear&delete breakpoints at next instruction\cr 364 | clear \opt{\it file\tt:}{\it fun}&delete breakpoints at entry to {\it fun}()\cr 365 | clear \opt{\it file\tt:}{\it line}&delete breakpoints on source line \cr 366 | delete \opt{{\it n}}&delete breakpoints 367 | \opt{or breakpoint {\it n}}\cr 368 | disable \opt{{\it n}}&disable breakpoints \opt{or breakpoint {\it n}} \cr 369 | enable \opt{{\it n}}&enable breakpoints \opt{or breakpoint {\it n}} \cr 370 | enable once \opt{{\it n}}&enable breakpoints \opt{or breakpoint {\it n}}; disable again when reached \cr 371 | enable del \opt{{\it n}}&enable breakpoints \opt{or breakpoint {\it n}}; delete when reached \cr 372 | ignore {\it n} {\it count}&ignore breakpoint {\it n}, {\it count} times\cr 373 | \cr 374 | commands {\it n}\par 375 | \qquad \opt{\tt silent}\par 376 | \qquad {\it command-list}&execute GDB {\it command-list} every time breakpoint {\it n} is reached. \opt{{\tt silent} suppresses default 377 | display}\cr 378 | end&end of {\it command-list}\cr 379 | \cr 380 | save breakpoint \opt{file} & saves breakpoints and their info (can be restored with {\tt source})\cr 381 | \endsec 382 | 383 | \sec Program Stack; 384 | backtrace \opt{\it n}\par 385 | bt \opt{\it n}&print trace of all frames in stack; or of {\it n} 386 | frames---innermost if {\it n}{\tt >0}, outermost if {\it n}{\tt <0}\cr 387 | frame \opt{\it n}&select frame number {\it n} or frame at address {\it 388 | n}; if no {\it n}, display current frame\cr 389 | up {\it n}&select frame {\it n} frames up\cr 390 | down {\it n}&select frame {\it n} frames down\cr 391 | info frame \opt{\it addr}&describe selected frame, or frame at 392 | {\it addr}\cr 393 | info args&arguments of selected frame\cr 394 | info locals&local variables of selected frame\cr 395 | info reg \opt{\it rn}$\ldots$\par 396 | info all-reg \opt{\it rn}®ister values \opt{for regs {\it rn\/}} in 397 | selected frame; {\tt all-reg} includes floating point\cr 398 | \endsec 399 | 400 | \vfill\eject 401 | \sec Execution Control; 402 | continue \opt{\it count}\par 403 | c \opt{\it count}&continue running; if {\it count} specified, ignore 404 | this breakpoint next {\it count} times\cr 405 | \cr 406 | step \opt{\it count}\par 407 | s \opt{\it count}&execute until another line reached; repeat {\it count} times if 408 | specified\cr 409 | s[tep]i \opt{\it count} & % \par 410 | %si \opt{\it count}& 411 | step by machine instructions \cr %rather than source 412 | %lines\cr 413 | % \cr 414 | next \opt{\it count}\par 415 | n \opt{\it count}&execute next line, including any function calls\cr 416 | n[ext]i \opt{\it count} & % \par 417 | %ni \opt{\it count}& 418 | next machine instruction \cr %rather than source 419 | %line\cr 420 | \cr 421 | until \opt{\it location}&run until next instruction (or {\it 422 | location}) or the current stack frame returns\cr 423 | finish&run until selected stack frame returns\cr 424 | return \opt{\it expr}&pop selected stack frame without executing 425 | \opt{setting return value}\cr 426 | signal {\it num}&resume execution with signal {\it s} (none if {\tt 0})\cr 427 | jump {\it line}\par 428 | jump *{\it address}&resume execution at specified {\it line} number or 429 | {\it address}\cr 430 | set var={\it expr}&evaluate {\it expr} without displaying it;\cr% use for 431 | %altering program variables\cr 432 | \endsec 433 | 434 | %{\rm Where supported: {\tt reverse-continue}, {\tt reverse-step}, etc ...} 435 | 436 | \sec Display; 437 | print \opt{\tt/{\it f}\/} \opt{\it expr}\par 438 | p \opt{\tt/{\it f}\/} \opt{\it expr}&show value of {\it expr} \opt{or 439 | last value \tt \$} according to format {\it f}:\cr 440 | \qquad x&hexadecimal\cr 441 | \qquad d&signed decimal\cr 442 | \qquad u&unsigned decimal\cr 443 | \qquad o&octal\cr 444 | \qquad t&binary\cr 445 | \qquad a&address, absolute and relative\cr 446 | \qquad c&character\cr 447 | \qquad f&floating point\cr 448 | call \opt{\tt /{\it f}\/} {\it expr}&like {\tt print} but does not display 449 | {\tt void}\cr 450 | x \opt{\tt/{\it Nuf}\/} {\it expr}&examine memory at address {\it expr}; 451 | optional format spec follows slash\cr 452 | \quad {\it N}&count of how many units to display\cr 453 | \quad {\it u}&unit size; one of\cr 454 | &{\tt\qquad b}\ individual bytes\cr 455 | &{\tt\qquad h}\ halfwords (two bytes)\cr 456 | &{\tt\qquad w}\ words (four bytes)\cr 457 | &{\tt\qquad g}\ giant words (eight bytes)\cr 458 | \quad {\it f}&printing format. Any {\tt print} format, or\cr 459 | &{\tt\qquad s}\ null-terminated string\cr 460 | &{\tt\qquad i}\ machine instructions\cr 461 | disassem \opt{\it addr}&display memory as machine instructions\cr 462 | \endsec 463 | 464 | \sec Automatic Display; 465 | display \opt{\tt/\it f\/} {\it expr}&show value of {\it expr} each time 466 | program stops \opt{according to format {\it f}\/}\cr 467 | display&display all enabled expressions on list\cr 468 | undisplay {\it n}&remove number(s) {\it n} from list of 469 | automatically displayed expressions\cr 470 | disable disp {\it n}&disable display for expression(s) number {\it 471 | n}\cr 472 | enable disp {\it n}&enable display for expression(s) number {\it 473 | n}\cr 474 | info display&numbered list of display expressions\cr 475 | \endsec 476 | 477 | \vfill\eject 478 | 479 | \sec Expressions; 480 | {\it expr}&an expression in C, C++, or Modula-2 (including function calls), or:\cr 481 | {\it addr\/}@{\it len}&an array of {\it len} elements beginning at {\it 482 | addr}\cr 483 | {\it file}::{\it nm}&a variable or function {\it nm} defined in {\it 484 | file}\cr 485 | $\tt\{${\it type}$\tt\}${\it addr}&read memory at {\it addr} as specified 486 | {\it type}\cr 487 | \$&most recent displayed value\cr 488 | \${\it n}&{\it n}th displayed value\cr 489 | \$\$&displayed value previous to \$\cr 490 | \$\${\it n}&{\it n}th displayed value back from \$\cr 491 | \$\_&last address examined with {\tt x}\cr 492 | \$\_\_&value at address \$\_\cr 493 | \${\it var}&convenience variable; assign any value\cr 494 | \cr 495 | show values \opt{{\it n}}&show last 10 values \opt{or surrounding 496 | \${\it n}}\cr 497 | show conv&display all convenience variables\cr 498 | \endsec 499 | 500 | \sec Symbol Table; 501 | info address {\it s}&show where symbol {\it s} is stored\cr 502 | info func \opt{\it regex}&show names, types of defined functions 503 | (all, or matching {\it regex})\cr 504 | info var \opt{\it regex}&show names, types of global variables (all, 505 | or matching {\it regex})\cr 506 | whatis \opt{\it expr}\par 507 | ptype \opt{\it expr}&show data type of {\it expr} \opt{or \tt \$} 508 | without evaluating; {\tt ptype} gives more detail\cr 509 | ptype {\it type}&describe type, struct, union, or enum\cr 510 | \endsec 511 | 512 | \sec GDB Scripts; 513 | source {\it script}&read, execute GDB commands from file {\it 514 | script}\cr 515 | \cr 516 | define {\it cmd}\par 517 | \qquad {\it command-list}&create new GDB command {\it cmd}; 518 | execute script defined by {\it command-list}\cr 519 | end&end of {\it command-list}\cr 520 | & Whenever you run {\it foo}, if user-defined {\tt hook-}{\it foo} exists, it is executed before; if {\tt hookpost-}{\it foo} exists, it is executed after. 521 | {\tt hook-stop} is executed when program execution stops: before BP commands are run, displays are printed, or the stack frame is printed. \cr 522 | \cr 523 | document {\it cmd}\par 524 | \qquad {\it help-text}&create online documentation 525 | for new GDB command {\it cmd}\cr 526 | end&end of {\it help-text}\cr 527 | \endsec 528 | 529 | \sec Checkpoints (only under Linux); 530 | checkpoint & snapshots current execution state; beware: 531 | when restored, each checkpoint has a PID different from program's original PID \cr 532 | info checkpoints & list saved checkpoints in the current session \cr 533 | restart {\it id} & restore checkpoint {\it id}; 534 | beware: breakpoints, gdb variables, etc. are not affected; 535 | a checkpoint only restores things that 536 | reside in program being debugged, not in debugger \cr 537 | delete checkpoint {\it id} & delete the previously-saved checkpoint {\it id}\cr 538 | \endsec 539 | 540 | \vfill\eject 541 | \sec Controlling GDB; 542 | set {\it param} {\it value}&set one of GDB's internal parameters\cr 543 | show {\it param}&display current setting of parameter\cr 544 | \xtra{\rm Parameters understood by {\tt set} and {\tt show}:} 545 | \quad complaint {\it limit}&number of messages on unusual symbols\cr 546 | \quad confirm {\it on/off}&enable or disable cautionary queries\cr 547 | \quad editing {\it on/off}&control {\tt readline} command-line editing\cr 548 | \quad height {\it lpp}&number of lines before pause in display\cr 549 | \quad language {\it lang}&Language for GDB expressions ({\tt auto}, {\tt c} or 550 | {\tt modula-2})\cr 551 | \quad listsize {\it n}&number of lines shown by {\tt list}\cr 552 | \quad prompt {\it str}&use {\it str} as GDB prompt\cr 553 | \quad radix {\it base}&octal, decimal, or hex number representation\cr 554 | \quad verbose {\it on/off}&control messages when loading 555 | symbols\cr 556 | \quad width {\it cpl}&number of characters before line folded\cr 557 | \quad write {\it on/off}&Allow or forbid patching binary, core files 558 | (when reopened with {\tt exec} or {\tt core}) 559 | \cr 560 | \quad history $\ldots$\par 561 | \quad h $\ldots$&groups with the following options:\cr 562 | \quad h exp {\it off/on}&disable/enable {\tt readline} history expansion\cr 563 | \quad h file {\it filename}&file for recording GDB command history\cr 564 | \quad h size {\it size}&number of commands kept in history list\cr 565 | \quad h save {\it off/on}&control use of external file for 566 | command history\cr 567 | \cr 568 | \quad print $\ldots$\par 569 | \quad p $\ldots$&groups with the following options:\cr 570 | \quad p address {\it on/off}&print memory addresses in stacks, 571 | values\cr 572 | \quad p array {\it off/on}&compact or attractive format for 573 | arrays\cr 574 | \quad p demangl {\it on/off}&source (demangled) or internal form for C++ 575 | symbols\cr 576 | \quad p asm-dem {\it on/off}&demangle C++ symbols in 577 | machine-instruction output\cr 578 | \quad p elements {\it limit}&number of array elements to display\cr 579 | \quad p object {\it on/off}&print C++ derived types for objects\cr 580 | \quad p pretty {\it off/on}&struct display: compact or indented\cr 581 | \quad p union {\it on/off}&display of union members\cr 582 | \quad p vtbl {\it off/on}&display of C++ virtual function 583 | tables\cr 584 | \cr 585 | show commands&show last 10 commands\cr 586 | show commands {\it n}&show 10 commands around number {\it n}\cr 587 | show commands +&show next 10 commands\cr 588 | \endsec 589 | 590 | \sec Working Files; 591 | file \opt{\it file}&use {\it file} for both symbols and executable; 592 | with no arg, discard both\cr 593 | core \opt{\it file}&read {\it file} as coredump; or discard\cr 594 | exec \opt{\it file}&use {\it file} as executable only; or discard\cr 595 | symbol \opt{\it file}&use symbol table from {\it file}; or discard\cr 596 | load {\it file}&dynamically link {\it file\/} and add its symbols\cr 597 | add-sym {\it file} {\it addr}&read additional symbols from {\it file}, 598 | dynamically loaded at {\it addr}\cr 599 | info files&display working files and targets in use\cr 600 | path {\it dirs}&add {\it dirs} to front of path searched for 601 | executable and symbol files\cr 602 | show path&display executable and symbol file path\cr 603 | info share&list names of shared libraries currently loaded\cr 604 | \endsec 605 | 606 | \vfill\eject 607 | \lsec Logging; 608 | show logging & show current values\cr 609 | set logging [on|off] & enable/disable \cr 610 | set logging file {\it file} & default is {\tt gdb.txt} \cr 611 | set logging overwrite [on|off] & append by default \cr 612 | set logging redirect [on|off] & redirect only to logfile \cr 613 | \endlsec 614 | 615 | \sec Debugging Targets; 616 | target {\it type} {\it param}&connect to machine, process, or file; e.g. 617 | {\tt target remote | sshpass -p{\it pw} ssh -T \opt{{\tt -p} {\it port}} \opt{user\tt @}{\it host} gdbserver - {\it prog} \opt{{\it args}}} \cr 618 | %help target&display available targets\cr 619 | attach {\it param}&connect to another process\cr 620 | detach&release target from GDB control\cr 621 | \endsec 622 | 623 | \sec Shell Commands; 624 | cd {\it dir}&change working directory to {\it dir}\cr 625 | pwd&Print working directory\cr 626 | make $\ldots$&call ``{\tt make}''\cr 627 | shell {\it cmd}&execute shell command {\it cmd} (AKA: {\tt !})\cr 628 | \endsec 629 | 630 | \sec Signals; 631 | handle {\it signal} {\it act}&specify GDB actions for {\it signal}:\cr 632 | \quad print&announce signal\cr 633 | \quad noprint&be silent for signal\cr 634 | \quad stop&halt execution on signal\cr 635 | \quad nostop&do not halt execution\cr 636 | \quad pass&allow your program to handle signal\cr 637 | \quad nopass&do not allow your program to see signal\cr 638 | info signals&show table of signals, GDB action for each\cr 639 | \endsec 640 | 641 | \sec Source Files; 642 | dir {\it names}&add directory {\it names} to front of source path\cr 643 | dir&clear source path\cr 644 | show dir&show current source path\cr 645 | %\cr 646 | list&show next ten lines of source\cr 647 | list -&show previous ten lines\cr 648 | list {\it lines}&display source surrounding {\it lines}, 649 | specified as:\cr 650 | \quad{\opt{\it file\tt:}\it num}&line number \opt{in named file}\cr 651 | \quad{\opt{\it file\tt:}\it function}&beginning of function \opt{in 652 | named file}\cr 653 | \quad{\tt +\it off}&{\it off} lines after last printed\cr 654 | \quad{\tt -\it off}&{\it off} lines previous to last printed\cr 655 | \quad{\tt*\it address}&line containing {\it address}\cr 656 | list {\it f},{\it l}&from line {\it f} to line {\it l}\cr 657 | info line {\it num}&show starting, ending addresses of compiled code for 658 | source line {\it num}\cr 659 | info source&show name of current source file\cr 660 | info sources&list all source files in use\cr 661 | forw {\it regex}&search following source lines for {\it regex}\cr 662 | rev {\it regex}&search preceding source lines for {\it regex}\cr 663 | \endsec 664 | 665 | \vfill\eject 666 | 667 | \sec Text User Interface (TUI); 668 | gdb --tui&start GDB in TUI mode (also \ctl{x} \ctl{a})\cr 669 | \ctl{x} 1&one window layout\cr 670 | \ctl{x} 2&one windows layout\cr 671 | \ctl{x} o&change active window\cr 672 | Left, Up, Right, Down&scroll active window\cr 673 | PgUp, PgDown&scroll active window by page up/down\cr 674 | \ctl{n}&walk to previous command\cr 675 | \ctl{p}&walk to next command\cr 676 | \ctl{l}&refresh the screen\cr 677 | layout {\it NAME}\cr 678 | \quad next&next layout\cr 679 | \quad prev&previous layout\cr 680 | \quad src&source and command windows\cr 681 | \quad asm&assembly and command windows\cr 682 | \quad split&source, assembly, and command windows\cr 683 | \quad regs&display regs and current window\cr 684 | tui reg {\it GROUP}\cr 685 | \quad next&cycle though all available reg. groups\cr 686 | \quad prev&cycle though in reverse order\cr 687 | \quad general&general purpose registers\cr 688 | \quad float&floating point registers\cr 689 | \quad vector&vector registers\cr 690 | \quad all&all registers\cr 691 | \endsec 692 | 693 | \sec Reverse execution; 694 | record&start recording\cr 695 | record stop&stop recording\cr 696 | reverse-continue \opt{\it count}\par 697 | rc \opt{\it count}&start executing in reverse; if {\it count} specified, ignore 698 | this breakpoint next {\it count} times\cr 699 | reverse-step \opt{\it count}&execute in reverse until another line reached; repeat {\it count} times if specified\cr 700 | reverse-stepi \opt{\it count}&execute a machine instruction in reverse; repeat {\it count} times if specified\cr 701 | reverse-next \opt{\it count}&execute next line (including function calls) in reverse; repeat {\it count} times if specified\cr 702 | reverse-nexti \opt{\it count}&execute a machine instruction (including function calls) in reverse; repeat {\it count} times if specified\cr 703 | reverse-finish&return to a point where current function was called\cr 704 | \endsec 705 | 706 | \sec GDB under GNU Emacs; 707 | M-x gdb&run GDB under Emacs\cr 708 | \ctl{h} m&describe GDB mode\cr 709 | M-s&step one line ({\tt step})\cr 710 | M-n&next line ({\tt next})\cr 711 | M-i&step one instruction ({\tt stepi})\cr 712 | \ctl{c} \ctl{f}&finish current stack frame ({\tt finish})\cr 713 | M-c&continue ({\tt cont})\cr 714 | M-u&up {\it arg} frames ({\tt up})\cr 715 | M-d&down {\it arg} frames ({\tt down})\cr 716 | \ctl{x} \&© number from point, insert at end\cr 717 | \ctl{x} SPC&(in source file) set break at point\cr 718 | \endsec 719 | 720 | \vfill\ 721 | 722 | \sec GDB License; 723 | show copying&Display GNU General Public License\cr 724 | show warranty&There is NO WARRANTY for GDB. Display full no-warranty 725 | statement.\cr 726 | \endsec 727 | 728 | {\smrm\parskip=3pt 729 | Copyright \copyright 2017 by zxgio, \copyright 1991-2016 Free Software Foundation, Inc. 730 | Author: Roland H. Pesch 731 | 732 | This cheat-sheet may be freely distributed under the terms of the GNU 733 | General Public License; the latest version can be found at: 734 | 735 | \tt https://github.com/zxgio/gdb-cheatsheet/ 736 | } 737 | \end 738 | --------------------------------------------------------------------------------