c++ gdb segmentation-fault libwebsockets

c++ - ¿Cómo puedo compilar libwebsockets con depuración(es decir,-g para poder usar gdb)?(Recibo segfault en la función libwebsockets, ssl_ctrl())



segmentation-fault (1)

Para su referencia (porque menciono las funciones de la biblioteca a continuación), la documentación de libwebsockets se puede encontrar aquí: https://github.com/warmcat/libwebsockets/blob/master/libwebsockets-api-doc.html#L466

El sitio se puede encontrar aquí: http://libwebsockets.org/trac/libwebsockets

Mi problema es que si paso en 1 o 2 para el parámetro ssl_connection de la función libwebsocket_client_connect () obtengo una segfault.

Mi código está escrito en c ++.

Queriendo saber dónde está pasando, ejecuté mi código en gdb (después de haber agregado la bandera -g). Después de segfault, ejecuté backtrace. Esto es lo que conseguí:

0x00007ffff7748c43 en SSL_ctrl () desde /lib/x86_64-linux-gnu/libssl.so.1.0.0 (gdb) backtrace

0 0x00007ffff7748c43 en SSL_ctrl () de /lib/x86_64-linux-gnu/libssl.so.1.0.0

1 0x00007ffff7503aa2 en lws_client_socket_service () de /usr/local/lib/libwebsockets.so.5.0.0

2 0x00007ffff74fe606 en libwebsocket_service_fd () de /usr/local/lib/libwebsockets.so.5.0.0

3 0x00007ffff7504029 en libwebsocket_client_connect_2 () de /usr/local/lib/libwebsockets.so.5.0.0

4 0x00007ffff75037d5 en lws_client_socket_service () de /usr/local/lib/libwebsockets.so.5.0.0

5 0x00007ffff74fe606 en libwebsocket_service_fd () de /usr/local/lib/libwebsockets.so.5.0.0

6 0x00007ffff7505980 en lws_plat_service () de /usr/local/lib/libwebsockets.so.5.0.0

Hay más, pero la información pertinente está arriba ...

Como se puede ver arriba, la segfault ocurre en la función SSL_ctrl ().

Si alguien ha obtenido una segfault de la función libwebsockets SSL_ctrl () y la ha resuelto, por favor avíseme.

Si alguien me puede decir cómo construir libwebsockets (usando make, cmake, u otro) con los indicadores de depuración y / o hacerlo de manera que se escriba de forma verdosa en algún archivo de registro y / o hacerlo para que pueda acceder a las funciones con gdb, ¡Se lo agradecería mucho!


Para compilar libwebsockets con opciones DEBUG, use -DCMAKE_BUILD_TYPE = argumento DEBUG con Cmake.

Asegúrese de que todas las versiones anteriores de libwebsockets.h (que se compilaron sin la opción -DCMAKE_BUILD_TYPE = DEBUG) se hayan eliminado y realice una compilación limpia con el argumento -DCMAKE_BUILD_TYPE = DEBUG habilitado.

Después de esto para habilitar la depuración durante la ejecución, use la opción -d establecida en el nivel de registro

si mi ejecutable es un calcetín, entonces habilite el registro de depuración mientras se ejecuta use ./sock 127.0.0.1 -p 9000 -d 65535

que dará salida como

[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