|
|
1.1 ! root 1: .\" Copyright (c) 1983, 1990 The Regents of the University of California. ! 2: .\" All rights reserved. ! 3: .\" ! 4: .\" Redistribution and use in source and binary forms are permitted provided ! 5: .\" that: (1) source distributions retain this entire copyright notice and ! 6: .\" comment, and (2) distributions including binaries display the following ! 7: .\" acknowledgement: ``This product includes software developed by the ! 8: .\" University of California, Berkeley and its contributors'' in the ! 9: .\" documentation or other materials provided with the distribution and in ! 10: .\" all advertising materials mentioning features or use of this software. ! 11: .\" Neither the name of the University nor the names of its contributors may ! 12: .\" be used to endorse or promote products derived from this software without ! 13: .\" specific prior written permission. ! 14: .\" THIS SOFTWARE IS PROVIDED ``AS IS'' AND WITHOUT ANY EXPRESS OR IMPLIED ! 15: .\" WARRANTIES, INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF ! 16: .\" MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. ! 17: .\" ! 18: .\" @(#)dbx.1 6.5 (Berkeley) 7/24/90 ! 19: .\" ! 20: .Dd July 24, 1990 ! 21: .Dt DBX 1 ! 22: .Os BSD 4.2 ! 23: .Sh NAME ! 24: .Nm dbx ! 25: .Nd debugger ! 26: .Sh SYNOPSIS ! 27: .Nm Dbx ! 28: .Op Fl r ! 29: .Op Fl i ! 30: .Op Fl k ! 31: .Op Fl I Ar dir ! 32: .Op Fl c Ar file ! 33: .Op Ar objfile Op Ar coredump ! 34: .Sh DESCRIPTION ! 35: .Nm Dbx ! 36: is a tool for source level debugging and execution of ! 37: programs under UNIX. ! 38: The ! 39: .Ar objfile ! 40: is an object file produced by a compiler ! 41: with the appropriate flag (usually ! 42: .Fl g ) ! 43: specified to produce symbol information in the object file. ! 44: Currently, ! 45: .Xr cc 1 , ! 46: .Xr f77 1 , ! 47: .Xr pc 1 , ! 48: and the DEC Western ! 49: Research Laboratory Modula-2 compiler, ! 50: .Xr mod l , ! 51: produce the appropriate source information. ! 52: The machine level facilities of ! 53: .Nm dbx ! 54: can be used on any program. ! 55: .Pp ! 56: The object file contains a symbol table that includes the names of ! 57: all the source files translated by the compiler to create it. ! 58: These files are available for perusal while using the debugger. ! 59: .Pp ! 60: If a file named ! 61: .Pa core ! 62: exists in the current directory ! 63: or a ! 64: .Ar coredump ! 65: file is specified, ! 66: .Nm dbx ! 67: can be used ! 68: to examine the state of the program when it faulted. ! 69: .Pp ! 70: If the file ! 71: .Pa .dbxinit ! 72: exists in the current directory then the ! 73: debugger commands in it are executed. ! 74: .Nm Dbx ! 75: also checks for a ! 76: .Pa .dbxinit ! 77: in the user's home directory ! 78: if there isn't one in the current directory. ! 79: .Pp ! 80: The command line options and their meanings are: ! 81: .Tw Fl ! 82: .Tp Fl r ! 83: Execute ! 84: .Ar objfile ! 85: immediately. ! 86: If it terminates successfully ! 87: .Nm dbx ! 88: exits. ! 89: Otherwise the reason for termination will be reported ! 90: and the user offered the option of entering the debugger ! 91: or letting the program fault. ! 92: .Nm Dbx ! 93: will read from ! 94: .Pa /dev/tty ! 95: when ! 96: .Fl r ! 97: is specified ! 98: and standard input is not a terminal. ! 99: .Tp Fl i ! 100: Force ! 101: .Nm dbx ! 102: to act as though standard input is a terminal. ! 103: .Tp Fl k ! 104: Map memory addresses, useful for kernel debugging. ! 105: .Tp Cx Fl I ! 106: .Cx \&\ \& ! 107: .Ar dir ! 108: .Cx ! 109: Add ! 110: .Ar dir ! 111: to the list of directories ! 112: that are searched when looking for a source file. ! 113: Normally ! 114: .Nm dbx ! 115: looks for source files in the current directory ! 116: and in the directory where ! 117: .Ar objfile ! 118: is located. ! 119: The directory search path can also be set with the ! 120: .Ic use ! 121: command. ! 122: .Tp Cx Fl c ! 123: .Cx \&\ \& ! 124: .Ar file ! 125: .Cx ! 126: Execute the ! 127: .Nm dbx ! 128: commands in the ! 129: .Ar file ! 130: before ! 131: reading from standard input. ! 132: .Tp ! 133: .Pp ! 134: Unless ! 135: .Fl r ! 136: is specified, ! 137: .Nm dbx ! 138: just prompts and waits for a command. ! 139: .Ss Execution and Tracing Commands ! 140: .Dw Fl ! 141: .Di L ! 142: .Dp Cx Ic run ! 143: .Cx \&\ \& ! 144: .Op Ar args ! 145: .Cx \&\ \& ! 146: .Op Sy < Ar filename ! 147: .Cx \&\ \& ! 148: .Op Sy > Ar filename ! 149: .Cx ! 150: .Dp Cx Ic rerun ! 151: .Cx \&\ \& ! 152: .Op Ar args ! 153: .Cx \&\ \& ! 154: .Op Sy < Ar filename ! 155: .Cx \&\ \& ! 156: .Op Sy > Ar filename ! 157: .Cx ! 158: Start executing ! 159: .Ar objfile , ! 160: passing ! 161: .Ar args ! 162: as command line arguments; ! 163: .Sy < ! 164: or ! 165: .Sy > ! 166: can be used to redirect input or output in the usual manner. ! 167: When ! 168: .Ic rerun ! 169: is used without any arguments the previous ! 170: argument list is passed to the program; ! 171: otherwise it is identical to ! 172: .Ic run . ! 173: If ! 174: .Ar objfile ! 175: has been written since the last time the symbolic information ! 176: was read in, ! 177: .Nm dbx ! 178: will read in the new information. ! 179: .Dp Cx Ic trace ! 180: .Cx \&\ \& ! 181: .Op Ic in Ar procedure/function ! 182: .Cx \&\ \& ! 183: .Op Ic if Ar condition ! 184: .Cx ! 185: .Dp Cx Ic trace ! 186: .Cx \&\ \& ! 187: .Ar source-line-number ! 188: .Cx \&\ \& ! 189: .Op Ic if Ar condition ! 190: .Cx ! 191: .Dp Cx Ic trace ! 192: .Cx \&\ \& ! 193: .Ar procedure/function ! 194: .Cx \&\ \& ! 195: .Op Ic in Ar procedure/function ! 196: .Cx \&\ \& ! 197: .Op Ic if Ar condition ! 198: .Cx ! 199: .Dp Cx Ic trace ! 200: .Cx \&\ \& ! 201: .Ar expression ! 202: .Cx \&\ \& ! 203: .Ic at ! 204: .Cx \&\ \& ! 205: .Ar source-line-number ! 206: .Cx \&\ \& ! 207: .Op Ic if Ar condition ! 208: .Cx ! 209: .Dp Cx Ic trace ! 210: .Cx \&\ \& ! 211: .Ar variable ! 212: .Cx \&\ \& ! 213: .Op Ic in Ar procedure/function ! 214: .Cx \&\ \& ! 215: .Op Ic if Ar condition ! 216: .Cx ! 217: Have tracing information printed when the program is executed. ! 218: A number is associated with the command that is used ! 219: to turn the tracing off (see the ! 220: .Ic delete ! 221: command). ! 222: .Pp ! 223: The first argument describes what is to be traced. ! 224: If it is a ! 225: .Ar source-line-number , ! 226: then the line is printed ! 227: immediately prior to being executed. ! 228: Source line numbers in a file other than the current one ! 229: must be preceded by the name of the file in quotes and a colon, e.g. ! 230: "mumble.p":17. ! 231: .Pp ! 232: If the argument is a procedure or function name then ! 233: every time it is called, information is printed telling ! 234: what routine called it, from what source line it was called, ! 235: and what parameters were passed to it. ! 236: In addition, its return is noted, and if it's a function ! 237: then the value it is returning is also printed. ! 238: .Pp ! 239: If the argument is an ! 240: .Ar expression ! 241: with an ! 242: .Ic at ! 243: clause ! 244: then the value of the expression is printed whenever the ! 245: identified source line is reached. ! 246: .Pp ! 247: If the argument is a variable then the name and value of the variable ! 248: is printed whenever it changes. ! 249: Execution is substantially slower during this form of tracing. ! 250: .Pp ! 251: If no argument is specified then all source lines are printed ! 252: before they are executed. ! 253: Execution is substantially slower during this form of tracing. ! 254: .Pp ! 255: The clause ! 256: .Ic in ! 257: .Ar procedure/function ! 258: restricts tracing information ! 259: to be printed only while executing inside the given procedure ! 260: or function. ! 261: .Pp ! 262: .Ar Condition ! 263: is a boolean expression and is ! 264: evaluated prior to printing the tracing information; ! 265: if it is false then the information is not printed. ! 266: .Dp Cx Ic stop if ! 267: .Cx \&\ \& ! 268: .Ar condition ! 269: .Cx ! 270: .Dp Cx Ic stop at ! 271: .Cx \&\ \& ! 272: .Ar source-line-number ! 273: .Cx \&\ \& ! 274: .Op Ic if Ar condition ! 275: .Cx ! 276: .Dp Cx Ic stop in ! 277: .Cx \&\ \& ! 278: .Ar source-line-number ! 279: .Cx \&\ \& ! 280: .Op Ic if Ar condition ! 281: .Cx ! 282: .Dp Cx Ic stop ! 283: .Cx \&\ \& ! 284: .Ar variable ! 285: .Cx \&\ \& ! 286: .Op Ic if Ar condition ! 287: .Cx ! 288: Stop execution when the given line is reached, procedure or function ! 289: called, variable changed, or condition true. ! 290: .Dp Cx Ic status ! 291: .Cx \&\ \& ! 292: .Op Ic \&> Ar filename ! 293: .Cx ! 294: Print out the currently active ! 295: .Ic trace ! 296: and ! 297: .Ic stop ! 298: commands. ! 299: .Dp Cx Ic delete ! 300: .Cx \&\ \& ! 301: .Ar command-number ... ! 302: .Cx ! 303: The traces or stops corresponding to the given numbers are removed. ! 304: The numbers associated with traces and stops are printed by ! 305: the ! 306: .Ic status ! 307: command. ! 308: .Dp Cx Ic catch ! 309: .Cx \&\ \& ! 310: .Ar number ! 311: .Cx ! 312: .Dp Cx Ic catch ! 313: .Cx \&\ \& ! 314: .Ar signal-name ! 315: .Cx ! 316: .Dp Cx Ic ignore ! 317: .Cx \&\ \& ! 318: .Ar number ! 319: .Cx ! 320: .Dp Cx Ic ignore ! 321: .Cx \&\ \& ! 322: .Ar signal-name ! 323: .Cx ! 324: Start or stop trapping a signal before it is sent ! 325: to the program. ! 326: This is useful when a program being debugged ! 327: handles signals such as interrupts. ! 328: A signal may be specified by number or by a name ! 329: (e.g., SIGINT). ! 330: Signal names are case insensitive and the ``SIG'' prefix is optional. ! 331: By default all signals are trapped except SIGCONT, SIGCHILD, ! 332: SIGALRM and SIGKILL. ! 333: .Dp Cx Ic cont ! 334: .Cx \&\ \& ! 335: .Ar integer ! 336: .Cx ! 337: .Dp Cx Ic cont ! 338: .Cx \&\ \& ! 339: .Ar signal-name ! 340: .Cx ! 341: Continue execution from where it stopped. ! 342: If a signal is specified, the process continues as though ! 343: it received the signal. ! 344: Otherwise, the process is continued as though it had not been stopped. ! 345: .Pp ! 346: Execution cannot be continued if the process has ``finished'', ! 347: that is, called the standard procedure ``exit''. ! 348: .Nm Dbx ! 349: does not allow the process to exit, thereby ! 350: letting the user to examine the program state. ! 351: .Dp Ic step ! 352: Execute one source line. ! 353: .Dp Ic next ! 354: Execute up to the next source line. ! 355: The difference between this and ! 356: .Ic step ! 357: is that ! 358: if the line contains a call to a procedure or function ! 359: the ! 360: .Ic step ! 361: command will stop at the beginning of that ! 362: block, while the ! 363: .Ic next ! 364: command will not. ! 365: .Dp Cx Ic return ! 366: .Cx \&\ \& ! 367: .Op Ar procedure ! 368: .Cx ! 369: Continue until a return to ! 370: .Ar procedure ! 371: is executed, or ! 372: until the current procedure returns if none is specified. ! 373: .Dp Cx Ic call ! 374: .Cx \&\ \& ! 375: .Ar procedure (parameters ) ! 376: .Cx ! 377: Execute the object code associated with the named procedure or function. ! 378: .Dp ! 379: .Ss Printing Variables and Expressions ! 380: Names are resolved first using the static scope of the current function, ! 381: then using the dynamic scope if the name is not defined ! 382: in the static scope. ! 383: If static and dynamic searches do not yield a result, ! 384: an arbitrary symbol is chosen and ! 385: the message ! 386: .Dq Li [using Ar qualified name] ! 387: is printed. ! 388: The name resolution procedure may be overridden by qualifying an identifier ! 389: with a block name, e.g., ! 390: .Dq Li module.variable ! 391: For C, source files are treated as modules named ! 392: by the file name without ``.c''. ! 393: .Pp ! 394: Expressions are specified with an approximately ! 395: common subset of C and Pascal (or equivalently Modula-2) syntax. ! 396: Indirection can be denoted using either a prefix ``*'' or ! 397: a postfix ``^'' and ! 398: array expressions are subscripted by brackets ! 399: .Cx (`` ! 400: .Op ! 401: .Cx \'\'). ! 402: .Cx ! 403: The field reference operator (``.'') can be used with pointers ! 404: as well as records, making the C operator ``\->'' unnecessary ! 405: (although it is supported). ! 406: .Pp ! 407: Types of expressions are checked; ! 408: the type of an expression may be overridden ! 409: by using ! 410: .Cx `` ! 411: .Ar type-name (expression) ! 412: .Cx \'\'. ! 413: .Cx ! 414: When there is no corresponding named type ! 415: the special constructs ! 416: .Cx ``& ! 417: .Ar type-name ! 418: .Cx \'\' ! 419: .Cx ! 420: and ! 421: .Cx ``$$ ! 422: .Ar tag-name ! 423: .Cx \'\' ! 424: .Cx ! 425: can be used to represent a pointer to a named type or C structure tag. ! 426: .Dw Fl ! 427: .Di L ! 428: .Dp Cx Ic assign ! 429: .Cx \&\ \& ! 430: .Ar variable ! 431: .Ic = ! 432: .Ar expression ! 433: .Cx ! 434: Assign the value of the expression to the variable. ! 435: .Dp Cx Ic dump ! 436: .Cx \&\ \& ! 437: .Op Ar procedure ! 438: .Cx \&\ \& ! 439: .Op Ic > Ar filename ! 440: .Cx ! 441: Print the names and values of variables in the given procedure, ! 442: or the current one if none is specified. ! 443: If the procedure given is ``.'', then the all active variables ! 444: are dumped. ! 445: .Dp Cx Ic print ! 446: .Cx \&\ \& ! 447: .Ar expression ! 448: .Cx \&\ \& ! 449: .Op Ic \&, Ar expression ... ! 450: .Cx ! 451: Print out the values of the expressions. ! 452: .Dp Cx Ic whatis ! 453: .Cx \&\ \& ! 454: .Ar name ! 455: .Cx ! 456: Print the declaration of the given name, which may be qualified ! 457: with block names as above. ! 458: .Dp Cx Ic which ! 459: .Cx \&\ \& ! 460: .Ar identifier ! 461: .Cx ! 462: Print the full qualification of the given identifer, i.e. ! 463: the outer blocks that the identifier is associated with. ! 464: .Dp Cx Ic up ! 465: .Cx \&\ \& ! 466: .Op Ar count ! 467: .Cx ! 468: .Dp Cx Ic down ! 469: .Cx \&\ \& ! 470: .Op Ar count ! 471: .Cx ! 472: Move the current function, which is used for resolving names, ! 473: up or down the stack ! 474: .Ar count ! 475: levels. ! 476: The default ! 477: .Ar count ! 478: is 1. ! 479: .Dp Ic where ! 480: Print out a list of the active procedures and function. ! 481: .Dp Cx Ic whereis ! 482: .Cx \&\ \& ! 483: .Ar identifier ! 484: .Cx ! 485: Print the full qualification of all the symbols whose ! 486: name matches the given identifier. ! 487: The order in which the symbols are printed is not meaningful. ! 488: .Dp ! 489: .Ss Accessing Source Files ! 490: .Pp ! 491: .Di L ! 492: .Dp Cx Ar /regular expression ! 493: .Op / ! 494: .Cx ! 495: .Dp Cx Ar ?regular expression ! 496: .Op ? ! 497: .Cx ! 498: Search forward or backward in the current source file ! 499: for the given pattern. ! 500: .Dp Cx Ic edit ! 501: .Cx \&\ \& ! 502: .Op Ar filename ! 503: .Cx ! 504: .Dp Cx Ic edit ! 505: .Cx \&\ \& ! 506: .Ar procedure/function-name ! 507: .Cx ! 508: Invoke an editor on ! 509: .Ar filename ! 510: or the current source file if none ! 511: is specified. ! 512: If a ! 513: .Ar procedure ! 514: or ! 515: .Ar function ! 516: name is specified, ! 517: the editor is invoked on the file that contains it. ! 518: Which editor is invoked by default depends on the installation. ! 519: The default can be overridden by setting the environment variable ! 520: .Ev EDITOR ! 521: to the name of the desired editor. ! 522: .Dp Cx Ic file ! 523: .Cx \&\ \& ! 524: .Op Ar filename ! 525: .Cx ! 526: Change the current source file name to ! 527: .Ar filename . ! 528: If none is specified then the current source file name is printed. ! 529: .Dp Cx Ic func ! 530: .Cx \&\ \& ! 531: .Op Ar procedure/function ! 532: .Cx ! 533: Change the current function. ! 534: If none is specified then print the current function. ! 535: Changing the current function implicitly changes the current source file ! 536: to the one that contains the function; it also changes the current scope ! 537: used for name resolution. ! 538: .Dp Cx Ic list ! 539: .Cx \&\ \& ! 540: .Op Ar source-line-number Op Ic \&, Ar source-line-number ! 541: .Cx ! 542: .Dp Cx Ic list ! 543: .Cx \&\ \& ! 544: .Ar procedure/function ! 545: .Cx ! 546: List the lines in the current source file from the first line number to ! 547: the second inclusive. ! 548: If no lines are specified, the next 10 lines are listed. ! 549: If the name of a procedure or function is given ! 550: lines ! 551: .Ar n-k ! 552: to ! 553: .Ar n+k ! 554: are listed where ! 555: .Ar n ! 556: is the first statement ! 557: in the procedure or function and ! 558: .Ar k ! 559: is small. ! 560: .Dp Cx Ic use ! 561: .Cx \&\ \& ! 562: .Ar directory-list ! 563: .Cx ! 564: Set the list of directories to be searched ! 565: when looking for source files. ! 566: .Dp ! 567: .Ss Command Aliases and Variables ! 568: .Dw Fl ! 569: .Di L ! 570: .Dp Cx Ic alias ! 571: .Cx \&\ \& ! 572: .Ar name ! 573: .Cx \&\ \& ! 574: .Ar name ! 575: .Cx ! 576: .Dp Cx Ic alias ! 577: .Cx \&\ \& ! 578: .Ar name ! 579: .Cx \&\ \& ! 580: .Ar string ! 581: .Cx ! 582: .Dp Cx Ic alias ! 583: .Cx \&\ \& ! 584: .Ar name (parameters) ! 585: .Cx \&\ \& ! 586: .Cx `` ! 587: .Ar string ! 588: .Cx \'\' ! 589: .Cx ! 590: When commands are processed, ! 591: dbx first checks to see if the word ! 592: is an alias for either a command or a string. ! 593: If it is an alias, then dbx treats the input as though ! 594: the corresponding string (with values substituted for any parameters) ! 595: had been entered. ! 596: For example, ! 597: to define an alias ``rr'' for the command ``rerun'', ! 598: one can say ! 599: .Pp ! 600: .Dl alias rr rerun ! 601: .Pp ! 602: To define an alias called ``b'' that sets a stop at a particular line ! 603: one can say ! 604: .Pp ! 605: .Dl alias b(x) ``stop at x'' ! 606: .Pp ! 607: Subsequently, the command ``b(12)'' will expand to ``stop at 12''. ! 608: .Pp ! 609: .Dp Cx Ic set ! 610: .Ws ! 611: .Ar name ! 612: .Op \&= Ar expression ! 613: .Cx ! 614: The ! 615: .Ic set ! 616: command defines values for debugger variables. ! 617: The names of these variables cannot conflict with names in the program ! 618: being debugged, and are expanded to the corresponding expression ! 619: within other commands. ! 620: The following variables have a special meaning: ! 621: .Dw Ds ! 622: .Di L ! 623: .Dp Li $frame ! 624: Setting this variable to an address causes dbx to use the stack frame ! 625: pointed to by the address for ! 626: doing stack traces and accessing local variables. ! 627: This facility is of particular use for kernel debugging. ! 628: .Dp Li $hexchars ! 629: .Dp Li $hexints ! 630: .Dp Li $hexoffsets ! 631: .Dp Li $hexstrings ! 632: When set, dbx prints out ! 633: out characters, integers, offsets from registers, or character pointers ! 634: respectively in hexadecimal. ! 635: .Dp Li $listwindow ! 636: The value of this variable specifies the number ! 637: of lines to list around a function or when the ! 638: .Ic list ! 639: command ! 640: is given without any parameters. ! 641: Its default value is 10. ! 642: .Dp Li $mapaddrs ! 643: Setting (unsetting) this variable causes dbx to start (stop) ! 644: mapping addresses. ! 645: As with ``$frame'', this is useful for kernel debugging. ! 646: .Dp Li $unsafecall ! 647: .Dp Li $unsafeassign ! 648: When ``$unsafecall'' is set, ! 649: strict type checking is turned off for arguments to ! 650: subroutine or function calls ( ! 651: .Ar e .g . ! 652: in the ! 653: .Ic call ! 654: statement). ! 655: When ``$unsafeassign'' is set, ! 656: strict type checking between the two sides ! 657: of an ! 658: .Ic assign ! 659: statement is turned off. ! 660: These variables should be used only with great care, ! 661: because they severely limit dbx's usefulness ! 662: for detecting errors. ! 663: .Dp ! 664: .Dp Cx Ic unalias ! 665: .Cx \&\ \& ! 666: .Ar name ! 667: .Cx ! 668: Remove the alias with the given name. ! 669: .Dp Cx Ic unset ! 670: .Cx \&\ \& ! 671: .Ar name ! 672: .Cx ! 673: Delete the debugger variable associated with ! 674: .Ar name . ! 675: .Dp ! 676: .Ss Machine Level Commands ! 677: .Dw Fl ! 678: .Di L ! 679: .Dp Cx Ic tracei ! 680: .Cx \&\ \& ! 681: .Op Ar address ! 682: .Cx \&\ \& ! 683: .Op .Ic if Ar cond ! 684: .Cx ! 685: .Dp Cx Ic tracei ! 686: .Cx \&\ \& ! 687: .Op Ar variable ! 688: .Cx \&\ \& ! 689: .Op Ic at Ar address ! 690: .Cx \&\ \& ! 691: .Op Ic if Ar cond ! 692: .Cx ! 693: .Dp Cx Ic stopi ! 694: .Cx \&\ \& ! 695: .Op Ar address ! 696: .Cx \&\ \& ! 697: .Op Ic if Ar cond ! 698: .Cx ! 699: .Dp Cx Ic stopi ! 700: .Cx \&\ \& ! 701: .Op Ic at ! 702: .Cx \&\ \& ! 703: .Op Ar address ! 704: .Cx \&\ \& ! 705: .Op Ic if Ar cond ! 706: .Cx ! 707: Turn on tracing or set a stop using a machine instruction address. ! 708: .Dp Ic stepi ! 709: .Dp Ic nexti ! 710: Single step as in ! 711: .Ic step ! 712: or ! 713: .Ic next , ! 714: but do a single instruction ! 715: rather than source line. ! 716: .Dp Cx Ar address ! 717: .Cx \&, ! 718: .Ar address ! 719: .Cx \&/ ! 720: .Op Ar mode ! 721: .Cx ! 722: .Dp Cx Ar address ! 723: .Cx \&/ ! 724: .Op Ar count ! 725: .Op Ar mode ! 726: .Cx ! 727: Print the contents of memory starting at the first ! 728: .Ar address ! 729: and continuing up to the second ! 730: .Ar address ! 731: or until ! 732: .Ar count ! 733: items are printed. ! 734: If the address is ``.'', the address following the one ! 735: printed most recently is used. ! 736: The ! 737: .Ar mode ! 738: specifies how memory is to be printed; ! 739: if it is omitted the previous mode specified is used. ! 740: The initial mode is ``X''. ! 741: The following modes are supported: ! 742: .Dw Cm ! 743: .Dp Cm i ! 744: print the machine instruction ! 745: .Dp Cm d ! 746: print a short word in decimal ! 747: .Dp Cm D ! 748: print a long word in decimal ! 749: .Dp Cm o ! 750: print a short word in octal ! 751: .Dp Cm O ! 752: print a long word in octal ! 753: .Dp Cm x ! 754: print a short word in hexadecimal ! 755: .Dp Cm X ! 756: print a long word in hexadecimal ! 757: .Dp Cm b ! 758: print a byte in octal ! 759: .Dp Cm c ! 760: print a byte as a character ! 761: .Dp Cm s ! 762: print a string of characters terminated by a null byte ! 763: .Dp Cm f ! 764: print a single precision real number ! 765: .Dp Cm g ! 766: print a double precision real number ! 767: .Dp ! 768: .Pp ! 769: Symbolic addresses are specified by preceding the name with an ``&''. ! 770: Registers are denoted by ``$rN'' where N is the number of the register. ! 771: Addresses may be expressions made up of other addresses and ! 772: the operators ``+'', ``-'', and indirection (unary ``*''). ! 773: .Dp ! 774: .Ss Miscellaneous Commands ! 775: .Tw Ic ! 776: .Tp Ic gripe ! 777: Invoke a mail program to send a message to the person in charge of ! 778: .Nm dbx . ! 779: .Tp Ic help ! 780: Print out a synopsis of ! 781: .Nm dbx ! 782: commands. ! 783: .Tp Ic quit ! 784: Exit ! 785: .Nm dbx . ! 786: .Tp Cx Ic sh ! 787: .Cx \&\ \& ! 788: .Ar command-line ! 789: .Cx ! 790: Pass the command line to the shell for execution. ! 791: The SHELL environment variable determines which shell is used. ! 792: .Tp Cx Ic source ! 793: .Cx \&\ \& ! 794: .Ar filename ! 795: .Cx ! 796: Read ! 797: .Nm dbx ! 798: commands from the given ! 799: .Ar filename . ! 800: .Tp ! 801: .Sh ENVIRONMENT ! 802: .Nm Dbx ! 803: utilizes the following environment variables: ! 804: .Ds I ! 805: EDITOR ! 806: HOME ! 807: PATH ! 808: SHELL ! 809: .De ! 810: .Sh FILES ! 811: .Dw .dbxinit ! 812: .Di L ! 813: .Dp Pa a.out ! 814: object file ! 815: .Dp Pa .dbxinit ! 816: initial commands ! 817: .Dp ! 818: .Sh SEE ALSO ! 819: .Xr cc 1 , ! 820: .Xr mod l , ! 821: .Xr f77 1 , ! 822: .Xr pc 1 ! 823: .Sh HISTORY ! 824: .Nm Dbx ! 825: appeared in 4.2 BSD. ! 826: .Sh BUGS ! 827: .Nm Dbx ! 828: suffers from the same ``multiple include'' malady as did ! 829: .Nm sdb . ! 830: If you have a program consisting of a number of object files ! 831: and each is built from source files that include header files, ! 832: the symbolic information for the header files is replicated in ! 833: each object file. ! 834: Since about one debugger start-up is done for each link, ! 835: having the linker ! 836: .Xr ld 1 ! 837: re-organize the symbol information ! 838: would not save much time, though it would reduce some of the ! 839: disk space used. ! 840: .Pp ! 841: This problem is an artifact of the unrestricted semantics ! 842: of #include's in C; for example an include file can contain ! 843: static declarations that are separate entities for each file ! 844: in which they are included. ! 845: However, even with Modula-2 there is a substantial amount of duplication ! 846: of symbol information necessary for inter-module type checking. ! 847: .Pp ! 848: Some problems remain with the support for individual languages. ! 849: Fortran problems include: ! 850: inability to assign to logical, logical*2, complex ! 851: and double complex variables; ! 852: inability to represent parameter constants ! 853: which are not type integer or real; ! 854: peculiar representation for the values of dummy procedures ! 855: (the value shown for a dummy procedure is actually ! 856: the first few bytes of the procedure text; ! 857: to find the location of the procedure, ! 858: use ``&'' to take the address of the variable).
This archive runs on limited infrastructure. Preserving old code on modern bandwidth. Automated agents are requested to crawl responsibly.