Slavenin999
@Slavenin999
программист php/erlang/elixir/js

C++ как определить почему падает приложение?

Доброго времени суток, %habrauser%!

Пишу простое fcgi-приложение с использованием openssl, которое будет шифровать/дешифровать приходящие данные. В с++ я разбираюсь слабо, всё собрано из примеров и допилено напильником, поэтому могут быть странные вещи, просьба на них указать :), чтобы можно было поправить. Первая проблема, это то, что приложение в windows падает на втором запросе (под ubuntu такого не наблюдается), первый отрабатывает нормально. Вторая проблема, что в windows в консоль после расшифровки выводятся правильные данные, а вот при ответе на запрос приходит помимо основных данных еще куда переносов строк и кусок "левой" строки, а в ubuntu данные вообще не расшифровываются.

Собираю командой
g++ function.cpp main.cpp -o encrypt -I/usr/include/openssl/ -L/usr/lib/ssl/ -lssl -lcrypto -lfcgi -ldl -lpthread -lboost_regex


Буду благодарен за любую помощь!
Исходники здесь https://github.com/Slavenin/fcgi_encrypt
  • Вопрос задан
  • 3216 просмотров
Решения вопроса 1
Slavenin999
@Slavenin999 Автор вопроса
программист php/erlang/elixir/js
рефакторинг спасёт мир :) надо было аккуратнее быть с указателями.
но возникла другая проблема , буду благодарен за помощь!
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 3
EXL
@EXL
Энтузиаст
Учитесь пользоваться дебаггером. Для Windows и Ubuntu отлично подойдет дебаггер GDB. Собираете программу с флагом -g, затем загружаете ее в gdb:

./gdb programe_name
В GDB даете команду на запуск (вводите run, нажимаете Enter). Вызываете падение в вашей программе, вводите команду "bt", которая даст вам понять на какой функции упала ваша программа.
Ответ написан
KOLANICH
@KOLANICH
Знаю JS, PHP, C++, C#
попробуй натравить статический анализатор
Ответ написан
savostin
@savostin
Еще один программист
Не специалист.
Попробуйте вынести OpenSSL_add_all_algorithms, EVP_cleanup и OPENSSL_config из функции encript_scring чтобы они вызывались всего один раз.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы