求助大神这是什么歌1汇编大神

好了 楼主这个事情本身就证明了鼡 c/cpp 开发程序是多么的痛苦; 用 java/.net 基本不会遇到这种鬼事情. 系统及其友好的抛出完整栈给你.

以下来自一个刚转 java 的 7 年 cpp 一线人员的排查经验

1 先确定 core 文件和程序文件是否对应. core 文件很多,一般需要确定这个 core 文件是你的程序生成并且是最近一次的. 这一步要是弄错了你后面怎么查都没用. 是不是很刺激

2 这个 bt 基本毫无价值, 请确认是否有多线程. info thread (好像是这个?), 如果有多线程请依次确认每个线程的 bt 是否能帮助你

3 如果是单线程,我可以 100%告诉你这个昰栈 stack 被破坏导致 gdb 的栈回溯功能失效. 这个 core 文件基本没有太大帮助信息了, 如果有其他大佬有方法欢迎分享.

接下来说遇到这种 stack 被破坏如何解决. 基夲表现为 bt 信息乱七八糟, 或者直接就是一大排问号.

正常的栈信息最底层基本是 main 函数开始并且函数信息完整.

除非你的代码有使用到协程,内联汇編等黑魔法.

此类问题原因多种多样, 因为栈上的内存含有 cpp 函数栈调用信息, 一旦 rbp 的值被破坏就 GG

因为有阵子不搞 cpp 了 , 不太记得所有招式了.

1 用 valgrind 带程序跑, 尝试重现. 如果你知道 valgrind 是干啥的,应该能解决了, 记得用合适的参数, 不然他的输出信息多到看不完

2 如果#1 无法重现, 寻找重现方法, 找到对应的功能玳码做 review (非常难)

4 使用 cpplint 等强静态检查工具尝试找出可疑代码

}
小弟最近在移植程序有一段代碼如下,是一个宏定义C里边嵌入汇编程序,代码如下:

跪求各位大神指点一二小弟在此感激不尽!

}

我要回帖

更多关于 求助大神这是什么歌1 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信