美文网首页
linux学习笔记5-linux调试神器之gdb一站式用起来

linux学习笔记5-linux调试神器之gdb一站式用起来

作者: scott_yu779 | 来源:发表于2018-02-22 11:14 被阅读0次

    资源

    好的gdb教程

    工具和方法

    1、gdb运行后给可执行程序设置参数

    在GDB中间加入程序启动参数
    比如我们需要调试一个可执行文件./a.out help
    这时
    $gdb ./a.out
    进入到gdb的命令行模式下,然后:
    (gdb) set args help
    就能加上可执行文件需要的参数,如果要看argc[1]到argc[N]的参数,只需要
    (gdb) show args
    

    基本

    使用

    gdb ./exe_file core.xxxx
    run
    bt
    

    1、示例

    BESTPOS: 
    GPS Week: 1984  GPS milliseconds: 110177000
      Latitude: 34.3999
      Longitude: 117.471
      Height: 49.7878
    
      Solution status: 0
      position type: 50
      number of svs tracked: 19
      number of svs used: 16
    BESTPOS: 
    GPS Week: 1984  GPS milliseconds: 110178000
      Latitude: 34.3999
      Longitude: 117.471
      Height: 49.7842
    
      Solution status: 0
      position type: 50
      number of svs tracked: 19
      number of svs used: 16
    
    Program received signal SIGSEGV, Segmentation fault.
    __memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:245
    245 ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S: No such file or directory.
    (gdb) bt
    #0  __memcpy_avx_unaligned () at ../sysdeps/x86_64/multiarch/memcpy-avx-unaligned.S:245
    #1  0x00007ffff7baa430 in novatel::Novatel::ParseBinary (this=0x7fffffffa210, message=0x7fffffffb598 "\252D\022\034\256", length=124, message_id=novatel::PSRDOPB_LOG_TYPE) at /home/yuhs/novatel_ws/src/novatel/src/novatel.cpp:1490
    #2  0x00007ffff7ba9608 in novatel::Novatel::BufferIncomingData (this=0x7fffffffa210, message=0x7fffffecd070 "\022\034\060", length=1232659) at /home/yuhs/novatel_ws/src/novatel/src/novatel.cpp:1373
    #3  0x00007ffff7ba8eef in novatel::Novatel::ReadFromFile (this=0x7fffffffa210, buffer=0x7fffffecd070 "\022\034\060", length=1232659) at /home/yuhs/novatel_ws/src/novatel/src/novatel.cpp:1233
    #4  0x0000000000409588 in main (argc=2, argv=0x7fffffffd8b8) at /home/yuhs/novatel_ws/src/novatel/examples/novatel_read_from_file.cpp:121
    
    

    工程化

    1、工程化之-cmake工程需要-g 如何做

    加入以下内容即可

    SET(CMAKE_BUILD_TYPE "Debug") 
    SET(CMAKE_CXX_FLAGS_DEBUG "$ENV{CXXFLAGS} -O0 -Wall -g -ggdb")
    SET(CMAKE_CXX_FLAGS_RELEASE "$ENV{CXXFLAGS} -O3 -Wall")
    

    相关文章

      网友评论

          本文标题:linux学习笔记5-linux调试神器之gdb一站式用起来

          本文链接:https://www.haomeiwen.com/subject/nswatftx.html