Господа знатоки, можете подсказать мне как я могу отладить следующий код
int main()
{
Memcache first_client("--SERVER=127.0.0.1:11211");
first_client.addServer("127.0.0.1", 11211);
map<string, map<string, string> > my_stats;
bool gotStats = first_client.getStats(my_stats);
std::vector<char> ret_val;
if (gotStats) {
bool a = first_client.get("HLWRD", ret_val);
std::string s(ret_val.begin(), ret_val.end());
std::cout << a;
//for (auto const &element: ret_val)
//std::cout << element << ' ';
printf("%s\n", "Got STATS");
}
else {
printf("%s\n", "Unable to get STATS");
}
}
Я пытаюсь прочитать значение из memcached, которое находится в нем (оно там есть 100%)
telnet >
get HLWRD
VALUE HLWRD 0 15
hello memcached
END
Но моя программа при работе возвращает следующие
0Got STATS
first_client.get("HLWRD", ret_val); // return false
Но почему так происходит я не могу понять, вроде как Got STATS говорит о том что подключение было успешным, но ключ прочитан не был, хотя он там есть.
memcached.hpp
/**
* Fetches an individual value from the server.
*
* @param[in] key key of object whose value to get
* @param[out] ret_val object that is retrieved is stored in
* this vector
* @return true on success; false otherwise
*/
bool get(const std::string &key, std::vector<char> &ret_val) {
uint32_t flags = 0;
memcached_return_t rc;
size_t value_length = 0;
char *value = memcached_get(memc_, key.c_str(), key.length(), &value_length, &flags, &rc);
if (value != NULL && ret_val.empty()) {
ret_val.reserve(value_length + 1); // Always provide null
ret_val.assign(value, value + value_length + 1);
ret_val.resize(value_length);
free(value);
return true;
}
return false;
}
Код компилируется отлично, и работает без падений, но я не знаю, как понять, почему данные из memcached не читаются? - Я не прошу ответа на вопрос "почему" (хотя это было бы здорово ) Я прошу вас сказать мне, как это можно отладить? как мне понять причину?