_dopr 是什么意思

问题描述 投票:0回答:1

我有一个 gdb 崩溃转储在 dopr 崩溃了

这个有什么作用? 我没有定义这个函数,也没有在任何地方使用调用。是libc函数吗?

[Switching to thread 1 (Thread 5339)]#0  0x00000000005f0937 in _dopr ()
(gdb) bt
#0  0x00000000005f0937 in _dopr ()
#1  0x00000000000003ff in ?? ()
#2  0x000000000111c3b0 in ?? ()
#3  0x00007fced1fe1f80 in ?? ()
#4  0x0000000000000000 in ?? ()
c++ c gdb coredump
1个回答
4
投票

正如评论中提到的 _dopr 不是你的问题。您看到的是堆栈损坏,并且在注释中,缓冲区溢出是最有可能的问题。

假设您正在使用 gcc 编译应用程序,请添加选项:

-fstack-protector-all

您的编译和链接选项。这会在堆栈周围添加一些额外的哨兵位,当发生缓冲区溢出时,在 gdb 中,您会看到一条更有用的“检测到堆栈粉碎”消息,以及应用程序实际销毁堆栈之前的堆栈跟踪.

© www.soinside.com 2019 - 2024. All rights reserved.