Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > C/C++: Программирование под Unix/Linux > Отладка программы на С++


Автор: Vyacheslav 2.2.2007, 13:41
Subj

Автор: MAKCim 2.2.2007, 14:26
компилируешь программу с ключом -g
далее (в самом простом случае)
Код

# gdb

Код

(gdb) file <твой бинарник>

Код

(gdb) break main

Код

(gdb) run <параметры> 

и вперед
список команд можно получить, набрав help
Код

(gdb) help

вообще, документации по gdb в интернете навалом

Автор: bsa 2.2.2007, 19:49
А можно воспользоваться средствами IDE (KDevelop, Code::Blocks и др.). Единственное, что я не нашел, как заставить отладчик останавливаться на брикпоинтах в конструкторах...

Автор: Dude03 2.2.2007, 20:55
Цитата(bsa @  2.2.2007,  19:49 Найти цитируемый пост)
Единственное, что я не нашел, как заставить отладчик останавливаться на брикпоинтах в конструкторах... 

b ClassA::ClassA ? Или b line_number? Все работает.

Автор: stan777 4.2.2007, 21:01
есть ли что-нибудь типа Olly для линукса ? а то gdb что-то не очень 

Автор: stan777 4.2.2007, 21:36
мда нашел на wasm.ru linice и ald нормальные проги.

Автор: Romikgy 4.2.2007, 23:47
MAKCim, а в асм режиме никак?

Автор: Dude03 5.2.2007, 09:54
Цитата(Romikgy @  4.2.2007,  23:47 Найти цитируемый пост)
MAKCim, а в асм режиме никак? 

команды si /ni. 

Автор: Romikgy 5.2.2007, 10:03
Цитата(Dude03 @  5.2.2007,  08:54 Найти цитируемый пост)
команды si /ni.  

это где ? в gdb ?

Автор: MAKCim 5.2.2007, 10:12
Цитата(Romikgy @  4.2.2007,  23:47 Найти цитируемый пост)
MAKCim, а в асм режиме никак? 

stepi - выполнение одной машинной инструкции
Код

.text
.globl main
main:
    xorl    %eax, %eax
    incl    %eax
    xorl    %ebx, %ebx
    int      $0x80


Код

# gcc -g test.S -o test
# gdb
(gdb) file test
(gdb) break main
(gdb) run
(gdb) stepi
...

Автор: Romikgy 5.2.2007, 10:17
сиба

Добавлено @ 10:22 
А че не видно самого асм-кода?

Автор: MAKCim 5.2.2007, 11:03
Цитата(Romikgy @  5.2.2007,  10:17 Найти цитируемый пост)
А че не видно самого асм-кода? 

в данном примере вроде должна показываться строчка, которой соответствует текущий  EIP  smile

Автор: Romikgy 5.2.2007, 11:11
вот что показывает (внизу)
а хотелось бы что бы хоть так
Цитата(MAKCim @  5.2.2007,  09:12 Найти цитируемый пост)
main:
    xorl    %eax, %eax
    incl    %eax
    xorl    %ebx, %ebx
    int      $0x80


Автор: MAKCim 5.2.2007, 11:32
Romikgy, 
 smile 
какая убогая консоль у M$ Window$  smile 
 smile 
пробуй команду
Код

(gdb) list *<адрес через 0x>

т. е например
Код

(gdb) list *0x0040ce21

Автор: Romikgy 5.2.2007, 11:40
Цитата(MAKCim @  5.2.2007,  10:32 Найти цитируемый пост)
т. е например
Выделить всёБез подсветки
1:
    
(gdb) list *0x0040ce21

Цитата

(gdb) list *0x0040ce20
No source file for address 0x40ce20.

Автор: MAKCim 5.2.2007, 12:55
Romikgy, 
я же адрес просто так взял  smile 
ты уж смотри, какие адреса у тебя на самом деле
команда list может быть:
Код

(gdb) list <имя функции>
(gdb) list <номер строки>
(gdb) list *<адрес>

Автор: Romikgy 5.2.2007, 15:37
Цитата(MAKCim @  5.2.2007,  11:55 Найти цитируемый пост)
я же адрес просто так взял 

a я нет!
остальное проверю

Автор: Dude03 6.2.2007, 21:47
Цитата(Romikgy @  5.2.2007,  15:37 Найти цитируемый пост)
a я нет!
остальное проверю

smile Потому что несколько инструкций может соответствовать одной строке кода на си. Отключи дебаг инфу и тогда отлаживай(правда тогда тебе n и s доступны не будут).

Цитата(MAKCim @  5.2.2007,  11:32 Найти цитируемый пост)
какая убогая консоль у M$ Window$

Нормальная. Хватает. Хотя дополнение фиговое smile 

Автор: GrayCardinal 10.2.2007, 18:13
Цитата

Нормальная. Хватает.

Хатает я так понимаю - Кондратий за известное место ?

Автор: powerfox 11.2.2007, 17:12
Цитата(Dude03 @  6.2.2007,  22:47 Найти цитируемый пост)
Нормальная. Хватает.

В принципе, да. Команду time выполнить можно. А вот что-то большее... smile 

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)