Есть ли способ, которым я могу читать, если оцениваемые выражения? Я имею в виду, как получить возвращаемое значение Realpath в -GDB Если оператор возвращает значения?
if(realpath(path.c_str(), realPath) == 0)
Есть ли способ, которым я могу читать, если оцениваемые выражения? Я имею в виду, как получить возвращаемое значение Realpath в -GDB Если оператор возвращает значения?
if(realpath(path.c_str(), realPath) == 0)
Вы можете step into and finishrealpath
функция. Возвращаемое значение будет напечатано на экране.
в GdB строке (если вы получили символы отладки включена при компиляции)
print realpath(path.c_str(),realPath)
будет выводить результат, очень изящный.
Если у вас есть указатель памяти, лежащий на вашем коде, вы можете использовать GDB для выделения для него нового пространства памяти и использовать его для хранения результата выражения, которое вы хотите оценить.
Проверьте, пожалуйста, this page.
(gdb) set variable p = malloc(sizeof(int))
(gdb) print p
$2 = (int *) 0x40013f98 (address allocated by malloc)
(gdb) set variable *p = 255
(gdb) print *p
$3 = 255
, но будьте осторожны с этим решением. Функция снова оценивается, поэтому, если она имеет какие-либо побочные эффекты, это повредит ваш сеанс отладки. Лучшим решением было бы войти в функцию, выполнить до тех пор, пока она не вернется и не проверит возвращаемое значение – flolo
правду о побочном эффекте, это то же самое, что если вы запустите эту строку кода – hhafez
** дисплей ** также выполнит эту работу. – karlphillip