gprof

ëªì¹
     gprof — í¸ì¶ ê·¸ëíì 근거íë íë¡íì¼ ë°ì´í°ë¥¼ íìíë¤

ìì
     gprof [options] [a.out [a.out.gmon ...]]

í´ì¤
     gprof ì í¸ë¦¬í°ë, C ë Pascal, Fortran77 ì ì¤í íë¡íì¼ì ìì±í©ëë¤.  gprof
     ê·¸ë¼, ë¶ë ¤ ê° routineì ì¤í ìê°ì, í¸ì¶í 측ì routineì ê°ì°ë©ëë¤.  íë¡íì¼
     ë°ì´í°ë, í¸ì¶ ê·¸ëí íë¡íì¼ íì¼ (call graph profile file) (ì¼)ë¡ë¶í°
     ì½ì´ë´ì§ëë¤. ì´ íì¼ì, cc(1), pc(1), f77(1) ì -pg (ì)를 ë¶ì¬ ì»´íì¼ ë
     íë¡ê·¸ë¨ì ìí´ ìì±ë©ëë¤.  -pg (ì)를 ë¶ì´ë©´(ì), ì»´íì¼ë¬ë íë¡íì¼ì©
     íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬ë¥¼ ë§í¬ í©ëë¤.  ì½ìí ì¼ì ííë¡ì ì´ë¬í íë¡ê·¸ë¨
     ë¼ì´ë¸ë¬ë¦¬ì ì´ë¦ì ë¤ìë _p íì§ë§ ë¶ìµëë¤. ì¦, íë¡íì¼ ëë ë²ì ¼ì libc.a í
     libc_p.a (ì´ì´)ì¬, ì»´íì¼ë¬ë ì¸ê°ì ì§ì  íë¡ê·¸ë¨ ë¼ì´ë¸ë¬ë¦¬ë¥¼ ì§ì í
     ê²½ì°ì -lc ëì ì -lc_p (ì)를 ì¬ì© ê°ë¥í©ëë¤.  주ì´ì§ ì¤ë¸ì í¸ íì¼
     (ëí´í¸ììë a.out) (ì)를 ì½ì´ë¤ì¬, ê·¸ ì¤ë¸ì í¸ì ì¬ë³¼ íì´ë¸ê³¼ í¸ì¶ ê·¸ëí
     íë¡íì¼ì ì°ê²°ìíµëë¤.  ëí´í¸ì ê·¸ëí íë¡íì¼ íì¼ì ì´ë¦ì, ì¤í íìëªì ì¬í½ì¤
     .gmon (ì)를 ë¶ì¸ ê²ìëë¤.  2 ê°(ì´) ì´ìì íë¡íì¼ íì¼ì´ 주ì´ì§ë©´(ì),
     gprof (ì)ë, ê·¸ë¬í ì 보를 í©ê³í´ ì¶ë ¥í©ëë¤.

     gprof ì í¸ë¦¬í°ë, ê° routineê° ìë¹í ìê°ì ê³ì°í©ëë¤.  ë¤ìì, ì´ ìê°ì í¸ì¶í´
     ê·¸ëíì ìì ë°ë¼ ì í ë©ëë¤.  ì¬ì´í´ì´ ë°ê²¬ëë©´(ì), ì¬ì´í´ì ëí í¸ì¶ì´,
     ì¬ì´í´ì ìê°ì ê³µì íë ê²ì¼ë¡ ì¬ê²¨ì§ëë¤.  ìµì´ì 리ì¤í¸ìë, í¨ìë¡ë¶í°ì í¸ì¶
     ê·¸ëí ì ì²´ì í©ê³ ìê°ì ìí´ ì ë ¬ ë í¨ìê° íìëê³  ììµëë¤.  ê° í¨ìì
     ìí¸ë¦¬ìëìë, ê·¸ í¨ìì í¸ì¶ ê·¸ëí ììì (ì§ì ì ì¸) ìì´ (ì¦ ë¶ë ¤ ê° í¨ìëª)ê°
     íìëì´ ê·¸ë¬í í¨ìì ìë¹ ìê°ì´ ì´ë ì ë ë¶ëª¨ (ì¦ í¸ì¶í 측ì í¨ì)ìê² ì í ëê³
     ììì§ê° ëíëê³  ììµëë¤.  ê°ì´ ê° í¨ìì ìí¸ë¦¬ì ì쪽ìë, í¨ìììì ìë¹ ìê°ì´
     í¸ì¶í´ ìì í¨ìì ì´ë»ê² ì í ëê³  ììì§ê° ëíëê³  ììµëë¤.

     ì¬ì´í´ ì ì²´ì ê·¸ 멤ë²ì 리ì¤í¸ë¥¼ ëíë¸ ìí¸ë¦¬ê°, ì¬ì´í´ì í¸ì¶ íìë ì¤í
     ìê°ìì ê° ë©¤ë²ì 기ì¬ë¥¼ í¬í¨í´ íìë©ëë¤.

     ë¤ìì 리ì¤í¸ììë, prof(1) (NetBSD, FreeBSDìë ììµëë¤)(ì)ê³¼ ê°ì íë« íë¡íì¼
     (flat profile) íìë©ëë¤.  ì¬ê¸°ìë, í¨ìì í©ê³ ì¤í ìê°ì´ë í¸ì¶í´ íì, ê·¸ í¨ì
     본체ë§ì ì¤í ìê° (ë°ë¦¬ ì¸ì»¨ë ëë ë§ì´í¬ë¡ ì¸ì»¨ë), ê·¸ í¨ì 본체 ë°
     거기ë¡ë¶í° ë¶ë ¤ ê° í¨ìì ì¤í ìê° (ë°ë¦¬ ì¸ì»¨ë ëë ë§ì´í¬ë¡ ì¸ì»¨ë),
     íì§ë§ íìë©ëë¤.

     ë§ì§ë§ì í¨ìëªì ìì¸ì´ íìë©ëë¤.

     ì´íì ìµìì´ ì´ì© ê°ë¥í©ëë¤.

     -a          ì ì ì¼ë¡ ì ì¸ë í¨ìì íì를 ìµì í©ëë¤.  ì´ ìµìì´ ì§ì ëë©´(ì),
                 ì ì  í¨ìì ëí ëª¨ë  ê´ë ¨íë ì ë³´ (ì¤í ìê°, ë¤ë¥¸ í¨ìì í¸ì¶í´,
                 ë¤ë¥¸ í¨ìë¡ë¶í°ì í¸ì¶ë±)(ì´)ê°, a.out íì¼ì¤ì ì ì  í¨ìì ì§ì ì
                 ì½ì´ ìëë í¨ìì í¬í¨ëê² ë©ëë¤.

     -b          íë¡íì¼ì¤ì ê° íëì ì¤ëªë¬¸ì ìµì í©ëë¤.

     -c          ì¤ë¸ì í¸ íì¼ì íì¤í¸ ê³µê°ì ì¡°ì¬íë ë°ê²¬ì ì¸ ë°©ë²ì ì¬ì©í´,
                 íë¡ê·¸ë¨ì ì ì  í¸ì¶ ê·¸ëí를 ì°¾ìëëë¤.  ì ì ì¸ í¸ì¶ë§ì ë¶ëª¨ì
                 ìì´ë, í¸ì¶ì 0 ì¼ë¡ì íìë©ëë¤.  ìí¤íì³ì ë°ë¼ìë, 본ìµìì
                 ìí¬í¸ëê³  ìì§ ììµëë¤.

     -C count    count ìì´ìì í¨ì를 í¬í¨í (í¸ì¶ ê´ê³ì) ì¬ì´í´ì ìì 기
                 ìí´ì(ë문ì), ì ë¨ í´ì¼ í  ìí¬ (í¸ì¶ ê´ê³)ì ìµì ì§í©ì
                 ì°¾ìëëë¤.  주ì:ì¬ì´í´ì ì¤ë¨í기 ìí´ì ì´ì©ëë ìê³ ë¦¬ì¦ì
                 ì§ìí¨ìì ì¸ ë¬¼ê±´ìëë¤. ê·¸ ë문ì, ì´ ìµìì ì§ì íë©´(ì), gprof
                 (ì)를 ì¤ííëë° ë§¤ì° ê¸´ ìê°ì´ 걸립ëë¤.

     -e name     routine name (ì)ê³¼ ê·¸ ëª¨ë  ìì (ê·¸ë¬í í¨ìê° íì ìµì ëì´ ìì§
                 ìì ë¶ëª¨ë¥¼ ê·¸ ë°ì ê°ì§ê³  ìì§ ìì¼ë©´)ì ê·¸ëí íë¡íì¼ ìí¸ë¦¬ì
                 íì를 ìµì  í©ëë¤. 2 ê°(ì´) ì´ìì -e (ì)를 ì§ì í  ìê° ììµëë¤.
                 ê° -e ìë 1 ê°(ì´) ë°ì name (ì)를 ì§ì í  ìê° ììµëë¤.

     -E name     -e (ì)ê³¼ ê°ì´, ì§ì ë routine name ì ê·¸ëí íë¡íì¼ ìí¸ë¦¬
                 íì를 ìµì í©ëë¤. ê²ë¤ê° íë¡ê·¸ë¨ì í íì ìê°ê³¼ ê³ì° ìê°ì
                 í¼ì¼í°ì§ë¡ë¶í° name ê·¸ë¦¬ê³  ì¬ì©ëê³  ìë ìê°ì´ ê±¸ë ¤
                 ì ì¸í©ëë¤.  (ì를 ë¤ì´, -E mcount -E mcleanup íì§ë§
                 ëí´í¸ìëë¤)

     -f name     ì§ì ë routine name (ì)ê³¼ ê·¸ ììì ê·¸ëí íë¡íì¼ ìí¸ë¦¬ ë§ì
                 íìí©ëë¤.  -f ìµìì, ë³µì ì§ì í  ìê° ììµëë¤.  ê° ìµì -f ìë, 1
                 ê°(ì´) ë°ì name (ì)를 ì§ì í  ìê° ììµëë¤.

     -F name     -f (ì)ê³¼ ê°ê², ì§ì ë routine name (ì)ê³¼ ê·¸ ììì ê·¸ëí
                 íë¡íì¼ ìí¸ë¦¬ë§ì íìí©ëë¤.  íë¡ê·¸ë¨ì í íì ìê°ê³¼ ê³ì° ìê°ì
                 ë¹ì¨ ìë, íìë routineì ìê°ë§ì´ ì¬ì©ë©ëë¤.  -F (ì)ë ë³µì ì§ì í
                 ìê° ììµëë¤. ê° ìµì -F ìë, 1 ê°(ì´) ë°ì name (ì)를 ì§ì í  ìê°
                 ììµëë¤. ìµì -F (ì)ë, ìµì -E ì í¨ê³¼ë¥¼ ì§ìëë¤.

     -k fromname toname
                 fromname (ì¼)ë¡ë¶í° toname ìì í¨ì í¸ì¶ ê´ê³ì ìí¬ë¥¼ ìì í©ëë¤.
                 ì´ ìµìì ìí´, ë¶íìíë¤ê³  ìê°íë ì¬ì´í´ì ì ë¨ í  ìê° ììµëë¤.
                 ìµì -k (ì)ë, ë³µì ì§ì í  ìê° ììµëë¤. ê° ìµì -k ìë í ë²ì
                 routineëª (fromname (ì)ê³¼ toname) ë°ì ì§ì í  ìê° ììµëë¤.

     -l          í¸ì¶ ê·¸ëí íë¡íì¼ì íì를 ìµì í©ëë¤.

     -L          íë« íë¡íì¼ì íì를 ìµì í©ëë¤.

     -s          ì§ì ë ëª¨ë  íë¡íì¼ íì¼ì¤ì íë¡íì¼ ì ë³´ì í©ê³ (ì)를 ëíë´ë ìì½
                 íë¡íì¼ íì¼ gmon.sum íì§ë§ ìì±ë©ëë¤.  ì´ ìì½ íë¡íì¼ íì¼ì ì´íìì
                 gprof ì ì¤íì ëí´ ì£¼ì´ì§ê³  (ê·¸ëìë íµì -s íì§ë§ ì§ì ëë¤),
                 ì¼ë ¨ì a.out ì¤íì ê²°ê³¼ì íë¡íì¼ ë°ì´í°ì í©ê³ë¥¼ ìêµ¬í  ìê°
                 ììµëë¤.

     -u          C íë¡ê·¸ë¨ìë ìë³´ì´ë ì´ë¦ì í¨ìì íì를 ìµì í©ëë¤.  ELF
                 ì¤ë¸ì í¸ íìììë, ìºë¦í° ‘. ’ (ì)를 í¬í¨í ì´ë¦ì ì미í©ëë¤.
                 a.out ì¤ë¸ì í¸ íìììë, ìºë¦í° ‘_’ ê·¸ë¦¬ê³  ê°ìíì§ ìë ì´ë¦ì
                 ì미í©ëë¤.  ê·¸ë¬í í¨ìì ê´ë ¨íë ì ë³´ë, ë°ë¡ ì ì측ì 주ìì
                 ìë¤ (íìê° ìµì ëì´ ìì§ ìë¤) í¨ìì í¬í¨ë©ëë¤.  ì´ê²ì ìí´ í¨ìë´ì
                 ìë ë¨ìí labelê° í¨ìë¡ ì¸ìëì´ ë²ë¦¬ë ê²ì ë§ì ìê° ììµëë¤.

     -z          ì¬ì©ëì´ ìì§ ìì routine (í¸ì¶ íìì í©ê³ ìê°ì´ 0 ì´ë¤)를
                 íìí©ëë¤.  -c ìµìê³¼ í¨ê» ì¬ì©íë©´(ì), íë²ë ë¶ë¦¬ì§ ìì
                 routine를 ë°ê²¬í  ìê° ììµëë¤.

ê´ë ¨ íì¼
     a.out
         íì¤í¸ ê³µê°ê³¼ ì´ë¦ 리ì¤í¸
     a.out.gmon
         ëì ì¸ í¸ì¶ ê·¸ëíì íë¡íì¼
     gmon.sum
         ëì ì¸ í¸ì¶ ê·¸ëíì íë¡íì¼ì ìì½

ê´ë ¨ í목
     cc(1), profil(2), clocks(7)

     S. Graham, P. Kessler, and M. McKusick, "An Execution Profiler for
     Modular Programs", Software - Practice and Experience, 13, pp. 671-685,
     1983.

     S. Graham, P. Kessler, and M. McKusick, "gprof: A Call Graph Execution
     Profiler", Proceedings of the SIGPLAN '82 Symposium on Compiler
     Construction, SIGPLAN Notices, 6, 17, pp. 120-126, June 1982.

ìì¬
     gprof íë¡ filerë, 4.2BSD (ì¼)ë¡ë¶í° ë±ì¥íìµëë¤.

ë²ê·¸
     ìíë§ì ì£¼ê¸°ê° ë¦¬ì¤í¸ì ìµì´ë¡ íìë©ëë¤ë§, íµê³ì ì¸ ìì ëì¤ì§ ìë ê²ì¼ë¡
     ììì§ë 모ë¦ëë¤.  ì°ë¦¬ë, ê° í¨ìì ì¤í ìê°ì ê·¸ í¨ìê° ìë¹í ìê°ì í©ê³ë¥¼ ê·¸
     í¨ìì í¸ì¶ íìë¡ ëë ê²ì ìí´ ííëë©´(ì) ê°ì íê³  ììµëë¤.  ë°ë¼ì, í¸ì¶ ê·¸ëíì
     ê´ê³ì ë°ë¼ í¨ìì ë¶ëª¨ìê² ì í ëë ìê°ì, ê·¸ ê´ê³ë¥¼ ëë¬ë íìì ì§ì  ë¹ë¡íê³
     ììµëë¤.

     ìì ì´ íë¡íì¼ëì´ ìì§ ìì ë¶ëª¨ë, íë¡íì¼ íê³  ìë ìì´ë¡ë¶í° ì í ëë ìê°ì
     ê°ì§ê³  ìì´ í¸ì¶ ê·¸ëíì 리ì¤í¸ ììì ìëì ì¼ë¡ 기ëëë ê²ì¼ë¡ì ëíë©ëë¤.
     ê·¸ë¬ë, ì´ í¨ìê° ê°ì§ë ìê°ì ê·¸ ì´ì ì í ëì§ ììµëë¤.  ê°ì´ ìê·¸ëì í¬ì°©íë
     í¨ìë, ê·¸ê²ë¤ì´ íë¡íì¼ ëê³  ìì´ë, ìëì ì¼ë¡ 기ëëë ê²ì¼ë¡ì ëíë©ëë¤ (ì¢ ë
     ë³µì¡í ì´ì ê° ììµëë¤ë§).  íë¡íì¼ routine를 ì¤ííê³  ìë íì¤ê°ì ìê·¸ëì
     í¬ì°©íë¤ í¨ìê° í¸ì¶ ëìì ë (ì´ ê²½ì°ë ëª¨ë  ê²ì´ ìì´ì ¸ ë²ë¦½ëë¤)를
     ì ì¸í´ìë, ìê·¸ëì í¬ì°©íë í¨ìì ìì´ì ì¤í ìê°ì, ê·¸ ë¶ëª¨ìê² ì¬ë°ë¥´ê³  ì í
     ëì´ì¼ í©ëë¤.

     íë¡íì¼ ëê³  ìë íë¡ê·¸ë¨ì, ê·¸ëí íë¡íì¼ íì¼ì íë¡íì¼ ì ë³´ê° ì¸ì´ë¸ëë ë¯
     exit(3) (ì)를 ë¶ë¥´ëì§, ì ìì ì¼ë¡ ì¢ë£íì§ ìì¼ë©´ ìë©ëë¤.