• 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

  • 相关阅读:
    使用 VS Code 开发和调试 Burp Suite 扩展
    后渗透神器 Empire 基础用法
    5种语言的按钮事件 断点
    X64下MmIsAddressValid的逆向及内存寻址解析
    x64 内存共享区 KUSER_SHARED_DATA
    内存映射+远线程 调用游戏CALL
    C语言运算符总结
    x32 x64的不同传参方式
    内存占用的一些小问题
    x64分页机制 9
  • 原文地址:https://www.cnblogs.com/mylinux/p/4778015.html
Copyright © 2020-2023  润新知