V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
shijingshijing
V2EX  ›  程序员

现在还有人用 GDB 么?

  •  
  •   shijingshijing · 2018-05-28 22:06:21 +08:00 · 9704 次点击
    这是一个创建于 2373 天前的主题,其中的信息可能已经有所发展或是发生改变。

    rt,想了解一下,现在还有人用 GDB 的那种一条条命令调试的码农么?我一般都是 IDE 里面直接鼠标点点打断点单步执行调试,后台还是 GDB 但 IDE 做了很多脏活累活,感觉 GDB 用命令那样用的话很累。

    主力 C/C++的筒子们,你们现在一般用什么方法?或者有什么好的 IDE 或者 toolchain ? 手动这样调我以前在嵌入式小板的 Terminal 里面做过,走 COM 口调命令行然后直接用 vi 更改,然后编译,然后 GDB 走一遍。

    56 条回复    2018-05-30 17:36:40 +08:00
    Kmzl
        1
    Kmzl  
       2018-05-28 22:09:07 +08:00 via Android
    上一家公司有。预定义一些调试函数,很好用
    Pyjamas
        2
    Pyjamas  
       2018-05-28 22:12:49 +08:00
    Pyjamas
        3
    Pyjamas  
       2018-05-28 22:13:12 +08:00   ❤️ 1
    [peda]( https://github.com/longld/peda)

    考虑一下
    bombless
        4
    bombless  
       2018-05-28 22:17:21 +08:00 via Android   ❤️ 1
    ……看你习惯什么工作流了。你要是调试 Windows 驱动,用 cdb / windbg 不也差不多
    wweir
        5
    wweir  
       2018-05-28 22:19:21 +08:00
    现在谁还用 gdb ?都改用 lldb 了
    0x11901
        6
    0x11901  
       2018-05-28 23:35:12 +08:00
    一般用苹果爸爸的 lldb
    cholerae
        7
    cholerae  
       2018-05-28 23:35:46 +08:00
    肯定有啊,看某个内存地址的内容,看堆栈之类的
    phoebuss
        8
    phoebuss  
       2018-05-28 23:36:25 +08:00 via Android
    看 coredump 没 gdb 不行啊…
    SupperMary
        9
    SupperMary  
       2018-05-28 23:51:22 +08:00 via Android
    用 gdb 简直要吐血
    changnet
        10
    changnet  
       2018-05-28 23:56:44 +08:00 via Android
    没 gdb 简直要死。c++程序,线上的不用 gdb 看哪来的 ide。线下日志加 gdb 调试,win 环境就用 vs
    pyufftj
        11
    pyufftj  
       2018-05-28 23:57:37 +08:00
    对于 ctf 的 pwn 选手而言,使用 gdb 是家常便饭。我也准备学习一下这工具了。
    shijingshijing
        12
    shijingshijing  
    OP
       2018-05-29 00:08:49 +08:00
    @changnet
    @phoebuss

    @cholerae
    @pyufftj
    可能有点误解,我的意思不是不用 GDB,而是用的方法,除非是纯命令行没有其他辅助工具,否则很少有人敲 gdb xxx.exe ,然后在命令行下 b 打断点,这样操作吧。基本上都是在 IDE 里面,通过 IDE 调用 GDB 完成吧。
    redsonic
        13
    redsonic  
       2018-05-29 01:01:18 +08:00
    Tonara
        14
    Tonara  
       2018-05-29 01:10:52 +08:00
    ssh 登 dev 机器上开发,没得选
    catror
        15
    catror  
       2018-05-29 01:29:09 +08:00 via Android
    还在用啊,习惯了
    lsmgeb89
        16
    lsmgeb89  
       2018-05-29 03:59:20 +08:00
    有啊,嵌入式都是 gdb 吧,其实有 gdb 不错了,有的环境只能 printf
    ryd994
        17
    ryd994  
       2018-05-29 06:00:58 +08:00 via Android   ❤️ 2
    有 gdb 就知足吧
    内核开发,调试全靠 printk,保持现场全靠 ssh 进去 dmesg -w
    snnn
        18
    snnn  
       2018-05-29 08:58:14 +08:00
    gdb 当然是首选
    gnaggnoyil
        19
    gnaggnoyil  
       2018-05-29 09:11:40 +08:00
    基于 GDB 的 GUI?有啊. https://github.com/cs01/gdbgui

    不过讲道理 gdb 打断点单步反汇编什么的都挺方便的,而且还可以用 gdbinit 和 pretty printer 扩展.我用 gdb 调程序比我用 vim 写程序还快,虽然这主要是因为我不喜欢 linux 那坨 CUI text editor...
    polaa
        20
    polaa  
       2018-05-29 09:22:17 +08:00
    gdb 的自由度大多了
    liuzhedash
        21
    liuzhedash  
       2018-05-29 09:40:36 +08:00
    有 gdb 已经很棒棒了,嵌入式开发只会 printf
    bfdh
        22
    bfdh  
       2018-05-29 10:00:28 +08:00
    嵌入式环境,一般先看代码,看不出问题加打印,打印不行再 GDB。如果有 coredump 文件,直接 GDB。
    cnmllll
        23
    cnmllll  
       2018-05-29 10:04:23 +08:00
    目前的环境只能用 GDB, 其实习惯就好了。比 GDb 更难受的是,远程指挥别人 GDB.
    mengzhuo
        24
    mengzhuo  
       2018-05-29 10:12:25 +08:00
    举手~

    Go 也用 gdb 调试,不过是最终手段,一般用日志。
    prolic
        25
    prolic  
       2018-05-29 10:15:33 +08:00
    需要 attach 和看 core 的情况只能用 gdb 啊
    kylix
        26
    kylix  
       2018-05-29 10:22:14 +08:00
    有啊,不过很少用,主要还是通过 ide 调用,
    lujiajing1126
        27
    lujiajing1126  
       2018-05-29 10:28:59 +08:00
    服务器上调 C / Fortran 程序当然都是 GDB 啊= =
    pkookp8
        28
    pkookp8  
       2018-05-29 11:02:26 +08:00 via Android
    有 gdb 就不错了
    你能想象 64M 内存 8M flash,gdb 都不能跑,flash 又放不下一个 coredump 的设备吗,一跑就 oom
    只能 printf
    但是编译器神级优化加一个 printf 问题就不出现了
    只能看堆桟,反汇编看出错原因😫
    USNaWen
        29
    USNaWen  
       2018-05-29 11:24:52 +08:00
    头条。
    shijingshijing
        30
    shijingshijing  
    OP
       2018-05-29 12:34:49 +08:00 via iPhone
    @lujiajing1126 这年头这个论坛上还能看到用 Fortran 的人也是不容易,Ada 了解一下。
    tempdban
        31
    tempdban  
       2018-05-29 12:37:11 +08:00 via Android
    @pkookp8 我去…我也是这种情况,唯一区别我是加的 printk
    hncqp
        32
    hncqp  
       2018-05-29 12:54:15 +08:00 via iPhone
    不用 gdb 还有啥能用的
    shijingshijing
        33
    shijingshijing  
    OP
       2018-05-29 13:12:41 +08:00 via iPhone
    @hncqp 不是不用。。。 是想问问都是怎么用的,是敲命令用的多还是在 IDE 里面点点点然后让 IDE 帮你弄这样用的多。我的提问标题写的不准确。。。
    lzhCoooder
        34
    lzhCoooder  
       2018-05-29 13:21:47 +08:00
    还行吧 ide 打断点和 gdb 也没啥区别啊,感觉没麻烦太多
    RqPS6rhmP3Nyn3Tm
        35
    RqPS6rhmP3Nyn3Tm  
       2018-05-29 13:22:11 +08:00 via iPhone
    我宁可用 print debug 也不用 gdb
    hncqp
        36
    hncqp  
       2018-05-29 13:25:05 +08:00 via iPhone
    @shijingshijing 线上 core 了的情况基本只能手动敲,没有 ide,其他情况就 printf 吧
    markx
        37
    markx  
       2018-05-29 13:25:38 +08:00
    好问题! 我也想知道现在人是怎么用的,难道真的手动插断点?!
    scipio
        38
    scipio  
       2018-05-29 13:28:46 +08:00
    基本每天都在用
    lujiajing1126
        39
    lujiajing1126  
       2018-05-29 13:32:42 +08:00
    @shijingshijing 某物理模型的数值计算的一个程序

    业界大家都是用 FORTRAN 的,其他物理学家给的子程序都是 Fortran
    Mirana
        40
    Mirana  
       2018-05-29 13:37:58 +08:00
    c/c++不用 gdb 用啥
    miketeam
        41
    miketeam  
       2018-05-29 13:41:39 +08:00 via iPhone
    所以 iOS 开发的不学 c 语言真是浪费,Xcode 这么牛逼的调试工具
    shijingshijing
        42
    shijingshijing  
    OP
       2018-05-29 14:46:29 +08:00 via iPhone
    @miketeam vs 的 debug 才叫 nb 呢,特别是调试树、链表这种稍微复杂点的数据结构。vs 现在还能直接调下位机了呢。
    xuchendev
        43
    xuchendev  
       2018-05-29 15:04:00 +08:00
    很多,比如我们做图像处理这边,海思平台全是 c,服务器端的 caffe,darknet 也用 gdb 调试啊,很方便。。
    bluefalconjun
        44
    bluefalconjun  
       2018-05-29 15:24:16 +08:00
    嵌入式开发 printf/k gdb 太奢侈了... 只能关键时候用. :(
    miketeam
        45
    miketeam  
       2018-05-29 16:14:28 +08:00 via iPhone
    vs 能调试 iOS ?
    nicevar
        46
    nicevar  
       2018-05-29 16:26:47 +08:00
    @miketeam #45 可以的,三四年前就可以了
    shijingshijing
        47
    shijingshijing  
    OP
       2018-05-29 16:30:46 +08:00 via iPhone
    @miketeam 看来你还没感受到宇宙第一 IDE 的强大。。。

    vs 还能用来做 iOS 开发呢,不是 xamarin,用原生的 c++写 app,还能跨平台做到 iOS 和 Andrpid 兼顾呢。
    Applenice
        48
    Applenice  
       2018-05-29 16:31:11 +08:00
    拿来看 core.....十分爽
    karllynn
        49
    karllynn  
       2018-05-29 17:51:13 +08:00
    @mengzhuo 不用 dlv 么
    mengzhuo
        50
    mengzhuo  
       2018-05-29 17:57:07 +08:00
    @karllynn 因为不支持 arm64
    dbow
        51
    dbow  
       2018-05-29 18:07:52 +08:00
    天天用
    chenxytw
        52
    chenxytw  
       2018-05-29 18:20:04 +08:00
    线上环境看 php-fpm 的 coredump 都是 gdb .....
    miketeam
        53
    miketeam  
       2018-05-29 18:24:56 +08:00 via iPhone
    说的原生 cpp 写 iOS,你能打包吗?能调试 UI 吗?能检查内存泄漏吗?能管理证书吗?编译速度有 Xcode 快?原生 cpp 写意思说你所以控件都手撸,先不说项目赶不赶,这个项目 iOS 以后就你一个人维护?
    miketeam
        54
    miketeam  
       2018-05-29 18:26:38 +08:00 via iPhone
    如果都能明天我还 windows
    bilberry
        55
    bilberry  
       2018-05-29 20:06:55 +08:00
    LLDB
    spensersheng
        56
    spensersheng  
       2018-05-30 17:36:40 +08:00
    做嵌入式的应该都会用吧,尤其是内存很小的一些特种设备
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1128 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 29ms · UTC 22:58 · PVG 06:58 · LAX 14:58 · JFK 17:58
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.