如何使用调试构建 libwebsockets(即 -g 以便我可以使用 gdb)?(我在libwebsockets函数上遇到段错误,ssl_ctrl() )

How can I build libwebsockets with debug (i.e. -g so I can use gdb)? (I'm getting segfault on libwebsockets function, ssl_ctrl() )

本文关键字:libwebsockets 遇到 函数 我在 段错误 错误 ctrl ssl gdb 构建 调试      更新时间:2023-10-16

为了您的参考(因为我在下面提到了库函数),可以在这里找到libwebsockets文档:https://github.com/warmcat/libwebsockets/blob/master/libwebsockets-api-doc.html#L466

网站位于:http://libwebsockets.org/trac/libwebsockets

我的问题是,如果我为libwebsocket_client_connect()函数的ssl_connection参数传递1或2,我会得到一个segfault

我的代码是用c++编写的。

为了找出它发生的地方,我在gdb中运行了我的代码(在添加了-g标志之后)。在segfault之后,我进行了回溯。这就是我得到的:

来自/lib/x86_64-linux-gnu/libssl.so.1.0.0的SSL_ctrl()中的0x00007ffff7748c43(gdb)回溯

来自/lib/x86_64-linux-gnu/libssl.so.1.0.0 的SSL_ctrl()中的0 0x00007ffff7748c43

来自/usr/local/lib/libwebsockets.so.5.0.0 的lws_client_socket_service()中的1 0x00007ffff7503a2

2来自/usr/local/lib/libwebsockets.so.5.0.0 的libwebsocket_service_fd()中的0x00007ffff74fe606

3来自/usr/local/lib/libwebsockets.so.5.0.0 的libwebsocket_client_connect_2()中的0x00007ffff7504029

来自/usr/local/lib/libwebsockets.so.5.0.0 的lws_client_socket_service()中的4 0x00007ffff75037d5

5来自/usr/local/lib/libwebsockets.so.5.0.0 的libwebsocket_service_fd()中的0x00007ffff74fe606

来自/usr/local/lib/libwebsockets.so.5.0.0 的lws_plat_service()中的6 0x00007ffff7505980

还有更多,但相关信息在上面。。。

如上所述,segfault发生在SSL_ctrl()函数中。

如果有人从libwebsockets SSL_ctrl()函数中得到了一个segfault并解决了它,请告诉我。

如果有人能告诉我如何使用调试标志构建libwebsocket(使用make、cmake或其他方法)和/或使其能够口头写入某些日志文件和/或让它能够使用gdb进入函数,我将不胜感激

要使用DEBUG选项构建libwebsocket,请使用带有Cmake的-DCMAKE_build_TYPE=DEBUG参数。

请确保删除所有早期版本的libwebsockets.h(使用-DCMAKE_BILD_TYPE=DEBUG选项生成),并在启用-DCMAKE_IBUILD_TYPE=DEBUG参数的情况下进行干净的生成。

在此之后,使用设置为日志级别的-d选项在执行时启用调试

如果我的可执行文件是sock,那么要在运行时启用调试日志,请使用./sock 127.0.0.1 -p 9000 -d 65535

这将提供类似的输出

    [1449754712:6654] CLIENT: lws_client_connect: direct conn
    [1449754712:6654] CLIENT: lws_client_connect_2
    [1449754712:6654] CLIENT: lws_client_connect_2: address 127.0.0.1
    Reason :35
    Reason :32
    Reason :36
    [1449754712:6655] CLIENT: nonblocking connect retry