现在还有人用 GDB 么? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
请不要在回答技术问题时复制粘贴 AI 生成的内容
shijingshijing
V2EX    程序员

现在还有人用 GDB 么?

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

    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
    6ufq0VLZn0DDkL80
        7
    6ufq0VLZn0DDkL80  
       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     Solana     5325 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 30ms UTC 05:51 PVG 13:51 LAX 21:51 JFK 00:51
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86