gpt4 book ai didi

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

转载 作者:塔克拉玛干 更新时间:2023-11-03 02:17:15 31 4
gpt4 key购买 nike

供您引用(因为我在下面提到了库函数),可以在此处找到 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,我会遇到段错误。

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

为了找出它发生的位置,我在 gdb 中运行了我的代码(在添加了 -g 标志之后)。在段错误之后,我运行了回溯。这是我得到的:

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

0 0x00007ffff7748c43 in SSL_ctrl () from/lib/x86_64-linux-gnu/libssl.so.1.0.0

1 0x00007ffff7503aa2 in lws_client_socket_service () from/usr/local/lib/libwebsockets.so.5.0.0

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

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

4 0x00007ffff75037d5 in lws_client_socket_service () from/usr/local/lib/libwebsockets.so.5.0.0

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

6 0x00007ffff7505980 in lws_plat_service () from/usr/local/lib/libwebsockets.so.5.0.0

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

从上面可以看出,段错误发生在 SSL_ctrl() 函数中。

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

如果有人能告诉我如何使用调试标志构建 libwebsockets(使用 make、cmake 或其他方式)和/或制作它以便它详细地写入某些日志文件和/或制作它以便我可以步骤进入 gdb 的功能,我将非常感激!

最佳答案

要使用 DEBUG 选项构建 libwebsockets,请在 Cmake 中使用 -DCMAKE_BUILD_TYPE=DEBUG 参数。

请确保删除所有早期版本的 libwebsockets.h(在没有使用 -DCMAKE_BUILD_TYPE=DEBUG 选项的情况下构建),并在启用 -DCMAKE_BUILD_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

关于c++ - 如何使用调试构建 libwebsockets(即 -g,以便我可以使用 gdb)? (我在 libwebsockets 函数 ssl_ctrl() 上遇到段错误),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26322249/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com