b) p rtp_header_parser_
$9 = std::unique_ptr<webrtc::RtpHeaderParser> = {get() = 0x7f9a08002110}
(gdb) p *rtp_header_parser_
warning: RTTI symbol not found for class 'webrtc::RtpHeaderParserImpl'
$10 = warning: RTTI symbol not found for class 'webrtc::RtpHeaderParserImpl'
{_vptr.RtpHeaderParser = 0x7f9a06daffc8 <vtable for webrtc::RtpHeaderParserImpl+16>}
(gdb) p *rtp_header_parser_.get()
warning: RTTI symbol not found for class 'webrtc::RtpHeaderParserImpl'
$11 = warning: RTTI symbol not found for class 'webrtc::RtpHeaderParserImpl'
{_vptr.RtpHeaderParser = 0x7f9a06daffc8 <vtable for webrtc::RtpHeaderParserImpl+16>}
(gdb)
不要使用-f nortti 编译
https://www.it1352.com/785762.html
遇到对象cool_cout时会重复警告。我该如何解决?当然,使用这些代码的程序工作,我没有问题。警告不应该被忽略,并且有关于必须获得的RTTI符号的知识。 (我不能用-f nortti编译,那么可执行文件会抱怨rtti应该启用iostreams)
关心的是编译器,这是实际创建程序的原因。最终用户不应该使用调试器,它不会影响你的二进制文件本身。
虽然gdb有时会发现问题,但其中的许多警告是因为gdb消耗调试符号,并且消费者(gdb)具有错误和防卫。通常他们只是减少gdb的功能。
在这种情况下,调试器中可用的类更少。它使调试更加困难,但不会损害应用程序本身。
您有几个选择来处理这个错误。
- 忽略gdb中的警告并继续使用。
- 获取gdb的源代码并尝试找到问题并提交补丁。我确信它会受到欢迎。
- 使用不同的调试器。 (尽管我看到所有的替代品都是付费产品。) 改写程序以不使用任何模板。 gdb模板处理是存在大部分符号查找问题的地方。