c语言,gdb

Get gdb call stack http://blog.csdn.net/zoufeiyy/article/details/1490241

Debugging with GDB - Examining the Stack  http://web.mit.edu/gnu/doc/html/gdb_8.html

1)准备: gcc -g 
        ##########################################################################################
        CFLAGS += -I.. -g
        msview: msview.o
            $(CC) $(CFLAGS) -o $@ msview.o $(LDFLAGS) $(LDLIBS)
        ##########################################################################################
        # Standard object building
        .c.o:
            $(CC) $(CFLAGS) -g -c $< -o $@
        ##########################################################################################    
        # Standard object building for dynamic library components using -fPIC
        .c.lo:
            $(CC) $(CFLAGS) -g -fPIC -c $< -o $@
        ##########################################################################################
    (2break
            $       gdb ./msview 
            (gdb) break unpack.c:76
            (gdb) run data
    (3)查看调用堆栈
            (gdb) bt
            #0  msr_unpack (record=0x7ffff7ed2010 "000001D", ' ' <repeats 13 times>, "a262", reclen=4096, 
            ppmsr=0x7fffffffe210, dataflag=1 '01', verbose=0 '00') at unpack.c:76
            #1  0x0000000000417320 in msr_parse (record=0x7ffff7ed2010 "000001D", ' ' <repeats 13 times>, "a262", 
            recbuflen=4096, ppmsr=0x7fffffffe210, reclen=4096, dataflag=1 '01', verbose=0 '00')
            at parseutils.c:108
            #2  0x000000000040311a in ms_readmsr_main (ppmsfp=0x7fffffffe1a0, ppmsr=0x7fffffffe210, 
            msfile=0x7fffffffe66b "data", reclen=4096, fpos=0x0, last=0x0, skipnotdata=1 '01', 
            dataflag=1 '01', selections=0x0, verbose=0 '00') at fileutils.c:552
            #3  0x0000000000401d6e in ms_readmsr (ppmsr=0x7fffffffe210, msfile=0x7fffffffe66b "data", reclen=-1, 
            fpos=0x0, last=0x0, skipnotdata=1 '01', dataflag=1 '01', verbose=0 '00') at fileutils.c:105
            #4  0x00000000004017a2 in main (argc=2, argv=0x7fffffffe3b8) at msview.c:75
            
            断点打在 msr_unpack,npack.c:76
                        --msr_parse    parseutils.c:108
                            --ms_readmsr_main fileutils.c:552
                                --main    msview.c:75
 
 

GDB调试器用法 https://i.cnblogs.com/EditPosts.aspx?postid=4778015

看内存:  x

   (gdb) x/10xb  0x400703  以十六进制方式查看内存地址0x400703开始10个字节的value。


  

  

参考:

1. 通过 GDB 学习 C 语言 http://blog.jobbole.com/87482/

2. Linux gdb设置和管理断点 http://www.cnblogs.com/rosesmall/archive/2012/04/13/2445527.html

3.Vim与GCC和gdb完美组合 http://www.cnblogs.com/Shirlies/p/3278937.html

4. GDB使用基础(转载) http://bbs.21ic.com/blog-678712-84132.html

原文地址:https://www.cnblogs.com/mylinux/p/4778015.html