Как я могу собрать libwebsockets с отладкой (то есть -g, чтобы я мог использовать GDB)? (Я получаю segfault для функции libwebsockets, ssl_ctrl ())

Для вашей справки (поскольку я упоминаю библиотечные функции ниже), документацию по libwebsockets можно найти здесь: https://github.com/warmcat/libwebsockets/blob/master/libwebsockets-api-doc.html#L466

Сайт можно найти здесь: http://libwebsockets.org/trac/libwebsockets

Моя проблема заключается в том, что если я передам 1 или 2 для параметра ssl_connection функции libwebsocket_client_connect (), я получу ошибку segfault.

Мой код написан на с ++.

Желая узнать, где это происходит, я запустил свой код в gdb (после добавления флага -g). После segfault я побежал обратно. Вот что я получил:

0x00007ffff7748c43 в SSL_ctrl () из /lib/x86_64-linux-gnu/libssl.so.1.0.0
(GDB) Backtrace

0 0x00007ffff7748c43 в SSL_ctrl () из /lib/x86_64-linux-gnu/libssl.so.1.0.0

1 0x00007ffff7503aa2 в lws_client_socket_service () из /usr/local/lib/libwebsockets.so.5.0.0

2 0x00007ffff74fe606 в libwebsocket_service_fd () из /usr/local/lib/libwebsockets.so.5.0.0

3 0x00007ffff7504029 в libwebsocket_client_connect_2 () из /usr/local/lib/libwebsockets.so.5.0.0

4 0x00007ffff75037d5 в lws_client_socket_service () из /usr/local/lib/libwebsockets.so.5.0.0

5 0x00007ffff74fe606 в libwebsocket_service_fd () из /usr/local/lib/libwebsockets.so.5.0.0

6 0x00007ffff7505980 в lws_plat_service () из /usr/local/lib/libwebsockets.so.5.0.0

Там больше, но уместная информация выше …

Как можно видеть выше, segfault происходит в функции SSL_ctrl ().

Если кто-то получил ошибку в функции libwebsockets SSL_ctrl () и решил ее, пожалуйста, дайте мне знать.

Если кто-нибудь может сказать мне, как собрать libwebsockets (используя make, cmake или другим способом) с флагами отладки и / или сделать так, чтобы он подробно записывал в какой-нибудь файл журнала и / или сделать так, чтобы я мог войти в функции с помощью gdb, Я был бы очень признателен!

4

Решение

Чтобы создать libwebsockets с параметрами DEBUG, используйте аргумент -DCMAKE_BUILD_TYPE = DEBUG с Cmake.

Убедитесь, что все более ранние версии 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
1

Другие решения


По вопросам рекламы [email protected]