Я работаю над программой C , чтобы добавить условные точки останова или распечатать некоторые значения. But when I use some expressions, the gdb failed with Invalid cast.
[*]OS: Ubuntu 24.04.1 LTS
[*]GCC: gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
GDB: GNU gdb (Ubuntu 15.0.50.20240403-0Ubuntu1) 15.0.50.20240403-git < /li>
Glibc: ubuntu glibc 2.39-0Ubuntu8.4 < /li>
< /ul>
вот мой код: < /p>
. PrettyPrint-Override ">#include
#include
int main(){
const char *i = "a";
const char *j = "b";
int c = strcmp(i, j);
printf("i: %s\n", i);
printf("j: %s\n", j);
printf("c: %d\n", c);
}
< /code>
Вот несколько примеров: < /p>
Compile < /li>
< /ol>
gcc -g3 test.c -o test
gdb ./test
< /code>
Условная точка останова: сбой с недопустимым составом < /code>: < /li>
< /ol>
(gdb) b 8 if ((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0)
Breakpoint 1 at 0x11a1: file test.c, line 8.
(gdb) run
Starting program: /home/xxx/work/osd/hwk89/test
This GDB supports auto-downloading debuginfo from the following URLs:
Enable debuginfod for this session? (y or [n])
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Error in testing condition for breakpoint 1:
Invalid cast.
Breakpoint 1, main () at test.c:8
8 printf("i: %s\n", i);
< /code>
print: некоторые примеры не сняты с недопустимым составом < /code>: < /li>
< /ol>
(gdb) b 8
(gdb) run
Starting program: /home/xuancheng/work/osd/hwk89/test
This GDB supports auto-downloading debuginfo from the following URLs:
Enable debuginfod for this session? (y or [n])
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, main () at test.c:8
8 printf("i: %s\n", i);
(gdb) p (int) strcmp(i, "a")
$1 = 0
(gdb) p (int) strcmp(i, "b")
$2 = -1
(gdb) p (int) strcmp(i, "a") && (int) strcmp(i, "b")
Invalid cast.
(gdb) p (int) strcmp(i, "a") && -1
$3 = 0
(gdb) p 0 && (int) strcmp(i, "b")
Invalid cast.
(gdb) p 0 && 1
$4 = 0
(gdb) p (int) 0 && (int) 1
$5 = 0
(gdb) p ((int) strcmp(i, "a")) && ((int) strcmp(i, "b"))
Invalid cast.
(gdb) p (((int) strcmp(i, "a")) && ((int) strcmp(i, "b")))
Invalid cast.
(gdb) p (int) strcmp(i, "a") == 0 && (int) strcmp(i, "b") == 0
Invalid cast.
(gdb) p ((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0)
Invalid cast.
(gdb) p (((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0))
Invalid cast.
Подробнее здесь: https://stackoverflow.com/questions/795 ... -operators
GDB: недействительный актер ⇐ Linux
1744711010
Anonymous
Я работаю над программой C , чтобы добавить условные точки останова или распечатать некоторые значения. But when I use some expressions, the gdb failed with Invalid cast.
[*]OS: Ubuntu 24.04.1 LTS
[*]GCC: gcc (Ubuntu 13.3.0-6ubuntu2~24.04) 13.3.0
GDB: GNU gdb (Ubuntu 15.0.50.20240403-0Ubuntu1) 15.0.50.20240403-git < /li>
Glibc: ubuntu glibc 2.39-0Ubuntu8.4 < /li>
< /ul>
вот мой код: < /p>
. PrettyPrint-Override ">#include
#include
int main(){
const char *i = "a";
const char *j = "b";
int c = strcmp(i, j);
printf("i: %s\n", i);
printf("j: %s\n", j);
printf("c: %d\n", c);
}
< /code>
Вот несколько примеров: < /p>
Compile < /li>
< /ol>
gcc -g3 test.c -o test
gdb ./test
< /code>
Условная точка останова: сбой с недопустимым составом < /code>: < /li>
< /ol>
(gdb) b 8 if ((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0)
Breakpoint 1 at 0x11a1: file test.c, line 8.
(gdb) run
Starting program: /home/xxx/work/osd/hwk89/test
This GDB supports auto-downloading debuginfo from the following URLs:
Enable debuginfod for this session? (y or [n])
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Error in testing condition for breakpoint 1:
Invalid cast.
Breakpoint 1, main () at test.c:8
8 printf("i: %s\n", i);
< /code>
print: некоторые примеры не сняты с недопустимым составом < /code>: < /li>
< /ol>
(gdb) b 8
(gdb) run
Starting program: /home/xuancheng/work/osd/hwk89/test
This GDB supports auto-downloading debuginfo from the following URLs:
Enable debuginfod for this session? (y or [n])
Debuginfod has been disabled.
To make this setting permanent, add 'set debuginfod enabled off' to .gdbinit.
[Thread debugging using libthread_db enabled]
Using host libthread_db library "/lib/x86_64-linux-gnu/libthread_db.so.1".
Breakpoint 1, main () at test.c:8
8 printf("i: %s\n", i);
(gdb) p (int) strcmp(i, "a")
$1 = 0
(gdb) p (int) strcmp(i, "b")
$2 = -1
(gdb) p (int) strcmp(i, "a") && (int) strcmp(i, "b")
Invalid cast.
(gdb) p (int) strcmp(i, "a") && -1
$3 = 0
(gdb) p 0 && (int) strcmp(i, "b")
Invalid cast.
(gdb) p 0 && 1
$4 = 0
(gdb) p (int) 0 && (int) 1
$5 = 0
(gdb) p ((int) strcmp(i, "a")) && ((int) strcmp(i, "b"))
Invalid cast.
(gdb) p (((int) strcmp(i, "a")) && ((int) strcmp(i, "b")))
Invalid cast.
(gdb) p (int) strcmp(i, "a") == 0 && (int) strcmp(i, "b") == 0
Invalid cast.
(gdb) p ((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0)
Invalid cast.
(gdb) p (((int) strcmp(i, "a") == 0) && ((int) strcmp(i, "b") == 0))
Invalid cast.
Подробнее здесь: [url]https://stackoverflow.com/questions/79574858/gdb-invalid-cast-when-using-strcmp-and-logical-and-operators[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия