home *** CD-ROM | disk | FTP | other *** search
/ minnie.tuhs.org / unixen.tar / unixen / PDP-11 / Trees / V7 / usr / doc / adb / tut1 < prev   
Encoding:
Text File  |  1979-01-10  |  13.9 KB  |  962 lines

  1. .sp 100
  2. .nr PS 9
  3. .nr VS 11
  4. .    \" START OF Figures
  5. .de P1
  6. .nf
  7. .in +.5i
  8. .ta .5i 1i 1.5i 2i 2.5i 3i 3.5i 4i 4.5i 5i
  9. .sp
  10. .ps 9
  11. .vs 11p
  12. ..
  13. .de P2
  14. .sp
  15. .fi
  16. .ps \\n(PS
  17. .vs \\n(VS
  18. .in -.5i
  19. ..
  20. .SH
  21. Figure 1:  C program with pointer bug
  22. .LP
  23. .P1
  24. struct buf {
  25.     int fildes;
  26.     int nleft;
  27.     char *nextp;
  28.     char buff[512];
  29.     }bb;
  30. struct buf *obuf;
  31.  
  32. char *charp "this is a sentence.";
  33.  
  34. main(argc,argv)
  35. int argc;
  36. char **argv;
  37. {
  38.     char    cc;
  39.  
  40.     if(argc < 2) {
  41.         printf("Input file missing\\n");
  42.         exit(8);
  43.     }
  44.  
  45.     if((fcreat(argv[1],obuf)) < 0){
  46.         printf("%s : not found\\n", argv[1]);
  47.         exit(8);
  48.     }
  49.     charp = \'T\';
  50. printf("debug 1 %s\\n",charp);
  51.     while(cc=  *charp++)
  52.         putc(cc,obuf);
  53.     fflush(obuf);
  54. }
  55. .P2
  56. .sp 100
  57. .SH
  58. Figure 2:  ADB output for C program of Figure 1
  59. .LP
  60. .P1
  61. .ft B
  62. adb a.out core
  63. $c
  64. .ft R
  65. ~main(02,0177762)
  66. .ft B
  67. $C
  68. .ft R
  69. ~main(02,0177762)
  70.     argc:        02
  71.     argv:        0177762
  72.     cc:        02124
  73. .ft B
  74. $r
  75. .ft R
  76. ps    0170010
  77. pc    0204    ~main+0152
  78. sp    0177740
  79. r5    0177752
  80. r4    01
  81. r3    0
  82. r2    0
  83. r1    0
  84. r0    0124
  85. ~main+0152:    mov    _obuf,(sp)
  86. .ft B
  87. $e
  88. .ft R
  89. savr5:        0
  90. _obuf:        0
  91. _charp:        0124
  92. _errno:        0
  93. _fout:        0
  94. .ft B
  95. $m
  96. .ft R
  97. text map    \`ex1\'
  98. b1 = 0             e1    = 02360          f1 = 020
  99. b2 = 0             e2    = 02360          f2 = 020
  100. data map    \`core1\'
  101. b1 = 0             e1    = 03500          f1 = 02000
  102. b2 = 0175400         e2    = 0200000          f2 = 05500
  103. .ft B
  104. *charp/s
  105. .ft R
  106. 0124:        TTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTTLx    Nh@x&_
  107. ~
  108. .ft B
  109. charp/s
  110. .ft R
  111. _charp:        T
  112.  
  113. _charp+02:    this is a sentence.
  114.  
  115. _charp+026:    Input file missing
  116. .ft B
  117. main.argc/d
  118. .ft R
  119. 0177756:    2
  120. .ft B
  121. *main.argv/3o
  122. .ft R
  123. 0177762:    0177770    0177776    0177777
  124. .ft B
  125. 0177770/s
  126. .ft R
  127. 0177770:    a.out
  128. .ft B
  129. *main.argv/3o
  130. .ft R
  131. 0177762:    0177770    0177776    0177777
  132. .ft B
  133. *"/s
  134. .ft R
  135. 0177770:    a.out
  136. .ft B
  137.  .=o
  138. .ft R
  139.         0177770
  140. .ft B
  141.  .\(mi10/d
  142. .ft R
  143. 0177756:    2
  144. .ft B
  145. $q
  146. .P2
  147. .sp 100
  148. .SH
  149. Figure 3:  Multiple function C program for stack trace illustration
  150. .LP
  151. .P1
  152. int    fcnt,gcnt,hcnt;
  153. h(x,y)
  154. {
  155.     int hi; register int hr;
  156.     hi = x+1;
  157.     hr = x\(miy+1;
  158.     hcnt++ ;
  159.     hj:
  160.     f(hr,hi);
  161. }
  162.  
  163. g(p,q)
  164. {
  165.     int gi; register int gr;
  166.     gi = q\(mip;
  167.     gr = q\(mip+1;
  168.     gcnt++ ;
  169.     gj:
  170.     h(gr,gi);
  171. }
  172.  
  173. f(a,b)
  174. {
  175.     int fi; register int fr;
  176.     fi = a+2*b;
  177.     fr = a+b;
  178.     fcnt++ ;
  179.     fj:
  180.     g(fr,fi);
  181. }
  182.  
  183. main()
  184. {
  185.     f(1,1);
  186. }
  187. .P2
  188. .sp 100
  189. .SH
  190. Figure 4:  ADB output for C program of Figure 3
  191. .LP
  192. .P1
  193. .ft B
  194. adb
  195. $c
  196. .ft R
  197. ~h(04452,04451)
  198. ~g(04453,011124)
  199. ~f(02,04451)
  200. ~h(04450,04447)
  201. ~g(04451,011120)
  202. ~f(02,04447)
  203. ~h(04446,04445)
  204. ~g(04447,011114)
  205. ~f(02,04445)
  206. ~h(04444,04443)
  207. .ft B
  208. HIT DEL KEY
  209. .ft R
  210. adb
  211. .ft B
  212. ,5$C
  213. .ft R
  214. ~h(04452,04451)
  215.     x:        04452
  216.     y:        04451
  217.     hi:        ?
  218. ~g(04453,011124)
  219.     p:        04453
  220.     q:        011124
  221.     gi:        04451
  222.     gr:        ?
  223. ~f(02,04451)
  224.     a:        02
  225.     b:        04451
  226.     fi:        011124
  227.     fr:        04453
  228. ~h(04450,04447)
  229.     x:        04450
  230.     y:        04447
  231.     hi:        04451
  232.     hr:        02
  233. ~g(04451,011120)
  234.     p:        04451
  235.     q:        011120
  236.     gi:        04447
  237.     gr:        04450
  238. .ft B
  239. fcnt/d
  240. .ft R
  241. _fcnt:        1173
  242. .ft B
  243. gcnt/d
  244. .ft R
  245. _gcnt:        1173
  246. .ft B
  247. hcnt/d
  248. .ft R
  249. _hcnt:        1172
  250. .ft B
  251. h.x/d
  252. .ft R
  253. 022004:        2346
  254. .ft B
  255. $q
  256. .P2
  257. .sp 100
  258. .SH
  259. Figure 5:  C program to decode tabs
  260. .LP
  261. .P1
  262. #define MAXLINE    80
  263. #define YES        1
  264. #define NO        0
  265. #define TABSP        8
  266. .sp .5
  267. char    input[] "data";
  268. char    ibuf[518];
  269. int    tabs[MAXLINE];
  270. .sp .5
  271. main()
  272. {
  273.     int col, *ptab;
  274.     char c;
  275. .sp .5
  276.     ptab = tabs;
  277.     settab(ptab);    /*Set initial tab stops */
  278.     col = 1;
  279.     if(fopen(input,ibuf) < 0) {
  280.         printf("%s : not found\\n",input);
  281.         exit(8);
  282.     }
  283.     while((c = getc(ibuf)) != \(mi1) {
  284.         switch(c) {
  285.             case \(fm\\t\(fm:    /* TAB */
  286.                 while(tabpos(col) != YES) {
  287.                     putchar(\(fm \(fm);    /* put BLANK */
  288.                     col++ ;
  289.                 }
  290.                 break;
  291.             case \(fm\\n\(fm:    /*NEWLINE */
  292.                 putchar(\(fm\\n\(fm);
  293.                 col = 1;
  294.                 break;
  295.             default:
  296.                 putchar(c);
  297.                 col++ ;
  298.         }
  299.     }
  300. }
  301. .sp .5
  302. /* Tabpos return YES if col is a tab stop */
  303. tabpos(col)
  304. int col;
  305. {
  306.     if(col > MAXLINE)
  307.         return(YES);
  308.     else
  309.         return(tabs[col]);
  310. }
  311. .sp .5
  312. /* Settab - Set initial tab stops */
  313. settab(tabp)
  314. int *tabp;
  315. {
  316.     int i;
  317. .sp .5
  318.     for(i = 0; i<= MAXLINE; i++) 
  319.         (i%TABSP) ? (tabs[i] = NO) : (tabs[i] = YES);
  320. }
  321. .P2
  322. .sp 100
  323. .SH
  324. Figure 6a:  ADB output for C program of Figure 5
  325. .LP
  326. .P1
  327. .ft B
  328. adb a.out \(mi
  329. settab+4:b
  330. fopen+4:b
  331. getc+4:b
  332. tabpos+4:b
  333. $b
  334. .ft R
  335. breakpoints
  336. count    bkpt        command
  337. 1    ~tabpos+04
  338. 1    _getc+04
  339. 1    _fopen+04
  340. 1    ~settab+04
  341. .ft B
  342. settab,5?ia
  343. .ft R
  344. ~settab:        jsr    r5,csv
  345. ~settab+04:    tst    \(mi(sp)
  346. ~settab+06:    clr    0177770(r5)
  347. ~settab+012:    cmp    $0120,0177770(r5)
  348. ~settab+020:    blt    ~settab+076
  349. ~settab+022:
  350. .ft B
  351. settab,5?i
  352. .ft R
  353. ~settab:        jsr    r5,csv
  354.         tst    \(mi(sp)
  355.         clr    0177770(r5)
  356.         cmp    $0120,0177770(r5)
  357.         blt    ~settab+076
  358. .ft B
  359. :r
  360. .ft R
  361. a.out: running
  362. breakpoint    ~settab+04:    tst    \(mi(sp)
  363. .ft B
  364. settab+4:d
  365. :c
  366. .ft R
  367. a.out: running
  368. breakpoint    _fopen+04:    mov    04(r5),nulstr+012
  369. .ft B
  370. $C
  371. .ft R
  372. _fopen(02302,02472)
  373. ~main(01,0177770)
  374.     col:        01
  375.     c:        0
  376.     ptab:        03500
  377. .ft B
  378. tabs,3/8o
  379. .ft R
  380. 03500:        01    0    0    0    0    0    0    0
  381.         01    0    0    0    0    0    0    0
  382.         01    0    0    0    0    0    0    0
  383. .P2
  384. .sp 100
  385. .SH
  386. Figure 6b:  ADB output for C program of Figure 5
  387. .LP
  388. .P1
  389. .ft B
  390. :c
  391. .ft R
  392. a.out: running
  393. breakpoint    _getc+04:    mov    04(r5),r1
  394. .ft B
  395. ibuf+6/20c
  396. .ft R
  397. __cleanu+0202:        This    is    a test    of
  398. .ft B
  399. :c
  400. .ft R
  401. a.out: running
  402. breakpoint    ~tabpos+04:    cmp    $0120,04(r5)
  403. .ft B
  404. tabpos+4:d
  405. settab+4:b  settab,5?ia
  406. settab+4:b  settab,5?ia;  0
  407. getc+4,3:b  main.c?C;  0
  408. settab+4:b  settab,5?ia;  ptab/o;  0
  409. $b
  410. .ft R
  411. breakpoints
  412. count    bkpt        command
  413. 1    ~tabpos+04
  414. 3    _getc+04    main.c?C;0
  415. 1    _fopen+04
  416. 1    ~settab+04    settab,5?ia;ptab?o;0
  417. ~settab:        jsr    r5,csv
  418. ~settab+04:    bpt
  419. ~settab+06:    clr    0177770(r5)
  420. ~settab+012:    cmp    $0120,0177770(r5)
  421. ~settab+020:    blt    ~settab+076
  422. ~settab+022:
  423. 0177766:    0177770
  424. 0177744:    @\`
  425. T0177744:    T
  426. h0177744:    h
  427. i0177744:    i
  428. s0177744:    s
  429. .P2
  430. .sp 100
  431. .SH
  432. Figure 7:  ADB output for C program with breakpoints
  433. .LP
  434. .in +.5i
  435. .nf
  436. .ps 8
  437. .vs 9
  438. .ft B
  439. adb ex3 \(mi
  440. h+4:b hcnt/d; h.hi/; h.hr/
  441. g+4:b gcnt/d; g.gi/; g.gr/
  442. f+4:b fcnt/d; f.fi/; f.fr/
  443. :r
  444. .ft R
  445. ex3: running
  446. _fcnt:        0
  447. 0177732:    214
  448. symbol not found
  449. .ft B
  450. f+4:b fcnt/d; f.a/; f.b/; f.fi/
  451. g+4:b gcnt/d; g.p/; g.q/; g.gi/
  452. h+4:b hcnt/d; h.x/; h.y/; h.hi/
  453. :c
  454. .ft R
  455. ex3: running
  456. _fcnt:        0
  457. 0177746:    1
  458. 0177750:    1
  459. 0177732:    214
  460. _gcnt:        0
  461. 0177726:    2
  462. 0177730:    3
  463. 0177712:    214
  464. _hcnt:        0
  465. 0177706:    2
  466. 0177710:    1
  467. 0177672:    214
  468. _fcnt:        1
  469. 0177666:    2
  470. 0177670:    3
  471. 0177652:    214
  472. _gcnt:        1
  473. 0177646:    5
  474. 0177650:    8
  475. 0177632:    214
  476. .ft B
  477. HIT DEL
  478. f+4:b fcnt/d; f.a/"a = "d; f.b/"b = "d; f.fi/"fi = "d
  479. g+4:b gcnt/d; g.p/"p = "d; g.q/"q = "d; g.gi/"gi = "d
  480. h+4:b hcnt/d; h.x/"x = "d; h.y/"h = "d; h.hi/"hi = "d
  481. :r
  482. .ft R
  483. ex3: running
  484. _fcnt:        0
  485. 0177746:    a = 1
  486. 0177750:    b = 1
  487. 0177732:    fi = 214
  488. _gcnt:        0
  489. 0177726:    p = 2
  490. 0177730:    q = 3
  491. 0177712:    gi = 214
  492. _hcnt:        0
  493. 0177706:    x = 2
  494. 0177710:    y = 1
  495. 0177672:    hi = 214
  496. _fcnt:        1
  497. 0177666:    a = 2
  498. 0177670:    b = 3
  499. 0177652:    fi = 214
  500. .ft B
  501. HIT DEL
  502. $q
  503. .in -.5i
  504. .sp 100
  505. .SH
  506. Figure 8:  ADB address maps
  507. .LP
  508. .de l1
  509. .tc
  510. .ta 1.20i +1.6i +2.5i
  511. ..
  512. .de l3
  513. .tc
  514. .ta 1.6i +2.80i +.2i +1.55i
  515. ..
  516. .de l2
  517. .tc
  518. .ti 1.0i
  519. .ta +0.5i +3.0i +1.75i
  520. .tc _
  521. ..
  522. .de l5
  523. .tc 
  524. .ti 1.0i
  525. .ta +0.75i +3.0i +1.5i
  526. .tc _
  527. ..
  528. .de l6
  529. .tc
  530. .ti 1.0i
  531. .ta +.8i +2.85i +0.4i +1.1i
  532. ..
  533. .de l8
  534. .tc
  535. .ti 1.0i
  536. .ta +0.5i +3.0i +1.75i
  537. .tc _
  538. ..
  539. .de la
  540. .tc
  541. .ta 1.20i +1.25i +1.7i
  542. ..
  543. .de lc
  544. .tc
  545. .ti 1.0i
  546. .ta +.85i +1.6i +.35i +1.1i
  547. ..
  548. .de lb
  549. .tc
  550. .ti 1.0i
  551. .ta +0.75i +1.75i +1.5i
  552. .tc _
  553. ..
  554. .ul
  555. 407 files
  556. .sp
  557. .l1
  558. a.out    hdr    text+data
  559. .l2
  560. |    |    |
  561. .l3
  562.     0    D
  563. .sp
  564. .l1
  565. core    hdr    text+data    stack
  566. .l5
  567. |    |    ......|    |
  568. .l6
  569.     0    D    S    E
  570. .sp 2
  571. .ul
  572. 410 files (shared text)
  573. .sp
  574. .l1
  575. a.out    hdr     text    data
  576. .l2
  577. |    |    |    |
  578. .l3
  579.     0    T    B    D
  580. .sp
  581. .la
  582. core    hdr    data    stack
  583. .lb
  584. |    |    ......|    |
  585. .lc
  586.     B    D    S    E
  587. .sp 2
  588. .ul
  589. 411 files (separated I and D space)
  590. .sp
  591. .l1
  592. a.out    hdr    text    data
  593. .l2
  594. |    |    |    |
  595. .l3
  596.     0    T    0    D
  597. .sp
  598. .la
  599. core    hdr    data    stack
  600. .lb
  601. |    |    ......|    |
  602. .lc
  603.     0    D    S    E
  604. .sp 2
  605. The following 
  606. .ul 
  607. adb
  608. variables are set.
  609. .nf
  610. .ta .75i 1.5i 3.5i 4.5i 5.5i
  611. .sp
  612.             407    410    411
  613. .sp
  614.     b    base of data    0    B    0
  615.     d    length of data    D    D\(miB    D
  616.     s    length of stack    S    S    S
  617.     t    length of text    0    T    T
  618. .sp 100
  619. .SH
  620. Figure 9:  ADB output for maps
  621. .LP
  622. .nf
  623. .in +.5i
  624. .ft B
  625. adb map407 core407
  626. $m
  627. .ft R
  628. text map    \`map407\'
  629. b1 = 0             e1    = 0256          f1 = 020
  630. b2 = 0             e2    = 0256          f2 = 020
  631. data map    \`core407\'
  632. b1 = 0             e1    = 0300          f1 = 02000
  633. b2 = 0175400         e2    = 0200000      f2 = 02300
  634. .ft B
  635. $v
  636. .ft R
  637. variables
  638. d = 0300
  639. m = 0407
  640. s = 02400
  641. .ft B
  642. $q
  643. .sp 2
  644. adb map410 core410
  645. $m
  646. .ft R
  647. text map    \`map410\'
  648. b1 = 0             e1    = 0200          f1 = 020
  649. b2 = 020000         e2    = 020116      f2 = 0220
  650. data map    \`core410\'
  651. b1 = 020000         e1    = 020200      f1 = 02000
  652. b2 = 0175400         e2    = 0200000      f2 = 02200
  653. .ft B
  654. $v
  655. .ft R
  656. variables
  657. b = 020000
  658. d = 0200
  659. m = 0410
  660. s = 02400
  661. t = 0200
  662. .ft B
  663. $q
  664. .sp 2
  665. adb map411 core411
  666. $m
  667. .ft R
  668. text map    \`map411\'
  669. b1 = 0             e1    = 0200          f1 = 020
  670. b2 = 0             e2    = 0116          f2 = 0220
  671. data map    \`core411\'
  672. b1 = 0             e1    = 0200          f1 = 02000
  673. b2 = 0175400         e2    = 0200000      f2 = 02200
  674. .ft B
  675. $v
  676. .ft R
  677. variables
  678. d = 0200
  679. m = 0411
  680. s = 02400
  681. t = 0200
  682. .ft B
  683. $q
  684. .in -.5i
  685. .sp 100
  686. .SH
  687. Figure 10:  Simple C program for illustrating formatting and patching
  688. .LP
  689. .P1
  690. char    str1[]    "This is a character string";
  691. int    one    1;
  692. int    number    456;
  693. long    lnum    1234;
  694. float    fpt    1.25;
  695. char    str2[]    "This is the second character string";
  696. main()
  697. {
  698.     one = 2;
  699. }
  700. .P2
  701. .sp 100
  702. .SH
  703. Figure 11:  ADB output illustrating fancy formats
  704. .LP
  705. .nf
  706. .ps 9
  707. .vs 11p
  708. .ft B
  709. adb map410 core410
  710. <b,\(mi1/8ona
  711. .ft R
  712. 020000:        0    064124    071551    064440    020163    020141    064143    071141
  713. .sp .5
  714. _str1+016:    061541    062564    020162    072163    064562    063556    0    02
  715. .sp .5
  716. _number:
  717. _number:    0710    0    02322    040240    0    064124    071551    064440
  718. .sp .5
  719. _str2+06:    020163    064164    020145    062563    067543    062156    061440    060550
  720. .sp .5
  721. _str2+026:    060562    072143    071145    071440    071164    067151    0147    0
  722. .sp .5
  723. savr5+02:    0    0    0    0    0    0    0    0
  724. .sp .5
  725. .ft B
  726. <b,20/4o4^8Cn
  727. .ft R
  728. 020000:        0    064124    071551    064440    @\`@\`This i
  729.         020163    020141    064143    071141    s a char
  730.         061541    062564    020162    072163    acter st
  731.         064562    063556    0    02    ring@\`@\`@b@\`
  732. .sp .5
  733. _number:    0710    0    02322    040240    H@a@\`@\`R@d @@
  734.         0    064124    071551    064440    @\`@\`This i
  735.         020163    064164    020145    062563    s the se
  736.         067543    062156    061440    060550    cond cha
  737.         060562    072143    071145    071440    racter s
  738.         071164    067151    0147    0    tring@\`@\`@\`
  739.         0    0    0    0    @\`@\`@\`@\`@\`@\`@\`@\`
  740.         0    0    0    0    @\`@\`@\`@\`@\`@\`@\`@\`
  741. data address not found
  742. .ft B
  743. <b,20/4o4^8t8cna
  744. .ft R
  745. 020000:        0    064124    071551    064440        This i
  746. _str1+06:    020163    020141    064143    071141        s a char
  747. _str1+016:    061541    062564    020162    072163        acter st
  748. _str1+026:    064562    063556    0    02        ring
  749. _number:
  750. _number:    0710    0    02322    040240        HR
  751. _fpt+02:    0    064124    071551    064440        This i
  752. _str2+06:    020163    064164    020145    062563        s the se
  753. _str2+016:    067543    062156    061440    060550        cond cha
  754. _str2+026:    060562    072143    071145    071440        racter    s
  755. _str2+036:    071164    067151    0147    0        tring
  756. savr5+02:    0    0    0    0
  757. savr5+012:    0    0    0    0
  758. data address not found
  759. .ft B
  760. <b,10/2b8t^2cn
  761. .ft R
  762. 020000:        0    0
  763. .sp .5
  764. _str1:        0124    0150        Th
  765.         0151    0163        is
  766.         040    0151         i
  767.         0163    040        s
  768.         0141    040        a
  769.         0143    0150        ch
  770.         0141    0162        ar
  771.         0141    0143        ac
  772.         0164    0145        te
  773. .ft B
  774. $Q
  775. .sp 100
  776. .SH
  777. Figure 12:  Directory and inode dumps
  778. .LP
  779. .nf
  780. .ft B
  781. adb dir \(mi
  782. =nt"Inode"t"Name"
  783. 0,\(mi1?ut14cn
  784. .ft R
  785.  
  786.         Inode    Name
  787. 0:        652    .
  788.         82    ..
  789.         5971    cap.c
  790.         5323    cap
  791.         0    pp
  792. .sp 4
  793. .ft B
  794. adb /dev/src \(mi
  795. .ft B
  796. 02000>b
  797. ?m<b
  798. .ft R
  799. new map        \`/dev/src\'
  800. b1 = 02000         e1    = 0100000000      f1 = 0
  801. b2 = 0             e2    = 0          f2 = 0
  802. .ft B
  803. $v
  804. .ft R
  805. variables
  806. b = 02000
  807. .ft B
  808. <b,\(mi1?"flags"8ton"links,uid,gid"8t3bn"size"8tbrdn"addr"8t8un"times"8t2Y2na
  809. .ft R
  810. 02000:        flags    073145
  811.         links,uid,gid    0163    0164    0141
  812.         size    0162    10356
  813.         addr    28770    8236    25956    27766    25455    8236    25956    25206
  814.         times    1976 Feb 5 08:34:56    1975 Dec 28 10:55:15
  815.  
  816. 02040:        flags    024555
  817.         links,uid,gid    012    0163    0164
  818.         size    0162    25461
  819.         addr    8308    30050    8294    25130    15216    26890    29806    10784
  820.         times    1976 Aug 17 12:16:51    1976 Aug 17 12:16:51
  821.  
  822. 02100:        flags    05173
  823.         links,uid,gid    011    0162    0145
  824.         size    0147    29545
  825.         addr    25972    8306    28265    8308    25642    15216    2314    25970
  826.         times    1977 Apr 2 08:58:01    1977 Feb 5 10:21:44
  827. .\"
  828. .\"    Start of Summary
  829. .sp 100
  830. .TL
  831. ADB Summary
  832. .LP
  833. .LP
  834. .if t .2C
  835. .nr VS 9
  836. .nr VS 11
  837. .SH
  838. Command Summary
  839. .LP
  840. .ta .7i
  841. a)   formatted printing
  842. .sp .5
  843. .IP "\fB? \fIformat\fR" .7i
  844. print from \fIa.out\fR file according to \fIformat\fR
  845. .IP "\fB/ \fIformat\fR" .7i
  846. print from \fIcore\fR file according to \fIformat\fR
  847. .IP "\fB= \fIformat\fR" .7i
  848. print the value of \fIdot\fR
  849. .sp .5
  850. .IP "\fB?w\fR expr" .7i
  851. write expression into \fIa.out\fR file
  852. .IP "\fB/w\fR expr" .7i
  853. write expression into \fIcore\fR file
  854. .sp .5
  855. .IP "\fB?l\fR expr" .7i
  856. locate expression in \fIa.out\fR file
  857. .LP
  858. .ta .7i
  859. b)   breakpoint and program control
  860. .LP
  861. .ta .7i
  862. .nf
  863. .ta .7i
  864. \fB:b\fR    set breakpoint at \fIdot\fR
  865. \fB:c\fR    continue running program
  866. \fB:d\fR    delete breakpoint
  867. \fB:k\fR    kill the program being debugged
  868. \fB:r\fR    run \fIa.out\fR file under ADB control
  869. \fB:s\fR    single step
  870. .LP
  871. .ta .7i
  872. c)   miscellaneous printing
  873. .LP
  874. .ta .7i
  875. .nf
  876. \fB$b\fR    print current breakpoints
  877. \fB$c\fR    C stack trace
  878. \fB$e\fR    external variables
  879. \fB$f\fR    floating registers
  880. \fB$m\fR    print ADB segment maps
  881. \fB$q\fR    exit from ADB
  882. \fB$r\fR    general registers
  883. \fB$s\fR    set offset for symbol match
  884. \fB$v\fR    print ADB variables
  885. \fB$w\fR    set output line width
  886. .LP
  887. .ta .7i
  888. d)   calling the shell
  889. .LP
  890. .ta .7i
  891. .nf
  892. \fB!\fR    call \fIshell\fP to read rest of line
  893. .LP
  894. .ta .7i
  895. e)   assignment to variables
  896. .LP
  897. .ta .7i
  898. .nf
  899. \fB>\fIname\fR    assign dot to variable or register \fIname\fR
  900. .sp 100
  901. .SH
  902. Format Summary
  903. .LP
  904. .ta .7i
  905. .nf
  906. \fBa    \fRthe value of dot
  907. \fBb    \fRone byte in octal
  908. \fBc    \fRone byte as a character
  909. \fBd    \fRone word in decimal
  910. \fBf    \fRtwo words in floating point
  911. \fBi    \fRPDP 11 instruction
  912. \fBo    \fRone word in octal
  913. \fBn    \fRprint a newline
  914. \fBr    \fRprint a blank space
  915. \fBs    \fRa null terminated character string
  916. \fIn\fBt    \fRmove to next \fIn\fR space tab
  917. \fBu    \fRone word as unsigned integer
  918. \fBx    \fRhexadecimal
  919. \fBY    \fRdate
  920. \fB^    \fRbackup dot
  921. \fB"..."\fR    print string
  922. .LP
  923. .ta .7i
  924. .SH
  925. Expression Summary
  926. .LP
  927. .ta .7i
  928. a) expression components
  929. .LP
  930. .ta .1.1i
  931. .nf
  932. \fBdecimal integer    \fRe.g. 256
  933. \fBoctal integer    \fRe.g. 0277
  934. \fBhexadecimal    \fRe.g. #ff
  935. \fBsymbols    \fRe.g. flag  _main  main.argc
  936. \fBvariables    \fRe.g. <b
  937. \fBregisters    \fRe.g. <pc <r0
  938. \fB(expression)    \fRexpression grouping
  939. .LP
  940. .ta .7i
  941. b) dyadic operators
  942. .LP
  943. .ta .7i
  944. .nf
  945. \fB+\fP    add
  946. \fB\(mi\fP    subtract
  947. \fB*\fP    multiply
  948. \fB%\fP    integer division
  949. \fB&\fP    bitwise and
  950. \fB|\fP    bitwise or
  951. \fB#\fP    round up to the next multiple
  952. .LP
  953. .ta .7i
  954. c) monadic operators
  955. .LP
  956. .ta .7i
  957. .nf
  958. \v'.25m'\s+2\fB~\fP\s0\v'-.25m'    not
  959. \fB*\fR    contents of location
  960. \fB\(mi\fR    integer negate
  961. .fi
  962.