paparika
V2EX  ›  C

求助一个无头绪排查的段错误问题

  •  
  •   paparika · Sep 2, 2019 · 5331 views
    This topic created in 2628 days ago, the information mentioned may be changed or developed.

    目前有两组库 libA 和 libB,分别单独编译到程序 A 和 B 中,均运行正常,但是把 libA 和 libB 一同编译到程序 C 中,且只调用 libA 的函数,运行到特定位置后会报段错误,可能是什么原因,如何排查?

    18 replies  •  2019-09-04 14:01:36 +08:00
    wutiantong
    wutiantong
    Sep 2, 2019
    1
    太多原因了,你的描述里几乎没提供什么有效信息啊。
    GeruzoniAnsasu
    GeruzoniAnsasu
    Sep 2, 2019
    2
    “把 libA 和 libB 一同编译到程序 C 中” 隐藏了关键信息
    GeruzoniAnsasu
    GeruzoniAnsasu
    Sep 2, 2019
    3
    (手滑)

    程序 C 肯定不可能是 A+B 把代码放一起就完事,一定有一些跟 A 和 B 都不同的逻辑。问题出在 caller C 上,跟 libA libB 应该都没关系
    paparika
    paparika
    OP
    Sep 2, 2019
    4
    程序 c 里,我基本上就是 main 一进来就调 libA 的函数,别的什么都不做,也崩溃了
    ace00010
    ace00010
    Sep 2, 2019
    5
    单独跑 AB 都没问题的,混合到你的 C 代码就出现了,特定位置出现就用 gdb 调试吧,快很多
    chinuno
    chinuno
    Sep 2, 2019 via Android
    6
    怎么觉得你这是 ab 有同名符号,调用 a 的时候子调用调到 b 的东西去了
    augustheart
    augustheart
    Sep 2, 2019
    7
    内存管理那块出问题吧
    xe2vherd
    xe2vherd
    Sep 2, 2019
    8
    Valgrind 看下有没有内存问题
    benson458
    benson458
    Sep 2, 2019 via iPhone
    9
    以前遇到过类似的情况,liba 和 libb 都是动态库。然后把这两者编译成静态的,再一起编译到 C,就好了
    nicevar
    nicevar
    Sep 2, 2019
    10
    最后应该发现是命名问题导致的
    hsuehsen
    hsuehsen
    Sep 2, 2019
    11
    1. 名字污染
    2. 内存越界
    3. 或者,堆或栈溢出
    katsusan
    katsusan
    Sep 2, 2019 via iPhone
    12
    debug 一下生成的 core 文件看看
    SelFree
    SelFree
    Sep 2, 2019
    13
    stl ?
    hxndg
    hxndg
    Sep 2, 2019
    14
    那你无头绪以后有没有单步跟踪,断点追查呢?
    GDB 啊
    paparika
    paparika
    OP
    Sep 2, 2019
    15
    @hsuehsen @katsusan @hxndg
    调用 libA 后崩溃了,但是 libA 是别人提供的,我这边没法进到里面单步。core 文件看过了,看不到崩溃栈信息,只显示了崩溃函数地址,通过 addr2line 看到崩在 c 标准库里了(这里不清楚为啥 core 看不到崩溃栈调用关系,跟 libA 是否 strip 有关吗?)
    ilotuo
    ilotuo
    Sep 2, 2019
    16
    装个 backtrace 看下
    b00tyhunt3r
    b00tyhunt3r
    Sep 4, 2019 via iPad
    17
    进 liba libb 找找有没有同名全局变量,强符号
    paparika
    paparika
    OP
    Sep 4, 2019
    18
    @b00tyhunt3r 有啥辅助工具吗,里面有很多库,每个库又有很多命名
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   955 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 39ms · UTC 19:55 · PVG 03:55 · LAX 11:55 · JFK 14:55
    ♥ Do have faith in what you're doing.