Usando emacs, vim e gdb
Um guia BEM básico
Fábio Augusto Salve Dias
Fábio Augusto Salve Dias
fabio.dias@gmail.com
fabio.dias@gmail.com
Emacs
Emacs
Editor MACroS
Editor MACroS
http://www.gnu.org/software/emacs/
http://www.gnu.org/software/emacs/
Disponível para inúmeras plataformas
Disponível para inúmeras plataformas
Versátil e expansível
Versátil e expansível
Versátil e expansível
Versátil e expansível
Possibilita debug, execução de comandos, Possibilita debug, execução de comandos,
leitura de e
leitura de e--mails e até um “psiquiatra” de mails e até um “psiquiatra” de maneira integrada.
Vantagens
Vantagens
Versões gráficas e modo texto (ssh)
Versões gráficas e modo texto (ssh)
Syntax highlight para inúmeras linguagens
Syntax highlight para inúmeras linguagens
C/C++, Java, HTML, tex, phyton, vhdl ...C/C++, Java, HTML, tex, phyton, vhdl ...
Auto
Auto--tabulação
tabulação
Auto
Auto--tabulação
tabulação
TAB identa a linha corrente TAB identa a linha corrente
(opinião pessoal) (opinião pessoal) ☺☺
Salva backups automaticamente
Salva backups automaticamente
Desvantagens
Desvantagens
Interface pouco intuitiva
Interface pouco intuitiva
Utiliza conjuntos de teclas de atalho bastante Utiliza conjuntos de teclas de atalho bastante
incomuns, como Ctrl+Y para colar e Ctrl+W para incomuns, como Ctrl+Y para colar e Ctrl+W para recortar.
recortar. recortar. recortar.
Selecionar com o mouse automaticamente Selecionar com o mouse automaticamente
copia. copia.
Em modo texto, os menus são abertos através Em modo texto, os menus são abertos através
da tecla F10 da tecla F10
Usando o emacs
Usando o emacs
Abrir arquivo:
Abrir arquivo:
Jeito fácil:Jeito fácil:
emacs nomearq.txt : Abre o arquivo ou cria se não emacs nomearq.txt : Abre o arquivo ou cria se não existir
existir existir existir
Jeito nãoJeito não--fácilfácil
Abra o emacs, adicione um novo buffer (no menu Abra o emacs, adicione um novo buffer (no menu buffer, em console acessível pelo F10), e escreva buffer, em console acessível pelo F10), e escreva nele.
Usando o emacs
Usando o emacs
••Salvar: Ctrl+X Ctrl+S
Salvar: Ctrl+X Ctrl+S
••Sair: Ctrl+X Ctrl+C
Sair: Ctrl+X Ctrl+C
••Recortar: Ctrl+W
Recortar: Ctrl+W
••Colar: Ctrl+Y
Colar: Ctrl+Y
••Colar: Ctrl+Y
Colar: Ctrl+Y
••Identar a linha: TAB
Identar a linha: TAB
••Localizar: Ctrl+S
Localizar: Ctrl+S
••Substituir: Alt+Shift+5 (Alt+%)
Substituir: Alt+Shift+5 (Alt+%)
••Abrir o Menu: F10
Abrir o Menu: F10
A tecla META (M)
A tecla META (M)
Pode ser acessada como:
Pode ser acessada como:
Usando o emacs
Usando o emacs
Alt Alt
Exemplo: MExemplo: M--x => Alt+x (sem soltar o alt)x => Alt+x (sem soltar o alt)
Esc Esc –– apertar e soltarapertar e soltar
Mais informações
Mais informações
Emacs Manual
Emacs Manual
http://www.gnu.org/software/emacs/manual/ehttp://www.gnu.org/software/emacs/manual/e
macs.html macs.html
Emacs FAQ
Emacs FAQ
vim
vim
VI iMproved
VI iMproved
http://www.vim.org/
http://www.vim.org/
Praticamente onipresente em sistemas *nix
Praticamente onipresente em sistemas *nix
Syntax highlight para infinitas linguagens e
Syntax highlight para infinitas linguagens e
Syntax highlight para infinitas linguagens e
Syntax highlight para infinitas linguagens e
tipos de arquivos, incluindo os arquivos
tipos de arquivos, incluindo os arquivos
.conf do linux, por exemplo
.conf do linux, por exemplo
Usando o vim
Usando o vim
Básico do básico:
Básico do básico:
O vim funciona em modos. Ao abrir um O vim funciona em modos. Ao abrir um
arquivo,
arquivo, ELE NÃO ESTÁ EM MODO DE ELE NÃO ESTÁ EM MODO DE EDIÇÃO
EDIÇÃO, e sim no modo de comando., e sim no modo de comando.
EDIÇÃO
EDIÇÃO, e sim no modo de comando., e sim no modo de comando.
Para entrar no modo de edição, aperte Para entrar no modo de edição, aperte
INSERT. Para ir ao modo de comando, INSERT. Para ir ao modo de comando, aperte ESC.
Usando o vim
Usando o vim
Comandos são usados somente no modo
Comandos são usados somente no modo
de comando, e sempre são precedidos
de comando, e sempre são precedidos
por ‘:’.
por ‘:’.
Salvar: “:w”Salvar: “:w” Salvar: “:w”Salvar: “:w” Sair: “:q”Sair: “:q”Salvar e sair: “:wq”Salvar e sair: “:wq”
Maiores informações
Maiores informações
http://www.las.ic.unicamp.br/~iuriatan/Quic
http://www.las.ic.unicamp.br/~iuriatan/Quic
kVIM.txt
kVIM.txt
www.truth.sk/vim/vimbook
www.truth.sk/vim/vimbook--OPL.pdf
OPL.pdf
www.truth.sk/vim/vimbook
www.truth.sk/vim/vimbook--OPL.pdf
OPL.pdf
Livro com 572 páginas sobre o vim (!!)Livro com 572 páginas sobre o vim (!!)
gdb
gdb
The GNU Project Debugger
The GNU Project Debugger
http://www.gnu.org/software/gdb/
http://www.gnu.org/software/gdb/
Capaz de depurar código em várias
Capaz de depurar código em várias
plataformas e linguagens.
plataformas e linguagens.
Usando o gdb (com gcc)
Usando o gdb (com gcc)
Primeiro passo:
Primeiro passo:
Adicionar a opção “Adicionar a opção “--g” à linha de compilação g” à linha de compilação
do programa a ser depurado. Com isso, o gcc do programa a ser depurado. Com isso, o gcc adicionará as informações necessárias para adicionará as informações necessárias para adicionará as informações necessárias para adicionará as informações necessárias para depuração no executável.
depuração no executável.
“gdb lab6 < lab6.in”
“gdb lab6 < lab6.in”
Abre o gdb, carregando o executável ‘lab6’, e Abre o gdb, carregando o executável ‘lab6’, e
usa como entrada deste o arquivo lab6.in usa como entrada deste o arquivo lab6.in
Comandos do gdb
Comandos do gdb
b <funcao/arquivo_fonte:num_linha>b <funcao/arquivo_fonte:num_linha>
Cria um breakpoint na função ou linha especificada do Cria um breakpoint na função ou linha especificada do
código fonte. código fonte. Ex:Ex: ra015988@apoena:~$ gdb gp ra015988@apoena:~$ gdb gp GNU gdb 2002 GNU gdb 2002--0404--0101--cvscvs GNU gdb 2002 GNU gdb 2002--0404--0101--cvscvs
Copyright 2002 Free Software Foundation, Inc. Copyright 2002 Free Software Foundation, Inc.
GDB is free software, covered by the GNU General Public License, and you GDB is free software, covered by the GNU General Public License, and you
are are
welcome to change it and/or distribute copies of it under certain conditions. welcome to change it and/or distribute copies of it under certain conditions. Type "show copying" to see the conditions.
Type "show copying" to see the conditions.
There is absolutely no warranty for GDB. Type "show warranty" for details. There is absolutely no warranty for GDB. Type "show warranty" for details. This GDB was configured as "i386
This GDB was configured as "i386--linux"...linux"... (gdb) b main
(gdb) b main
Breakpoint 1 at 0x80490b4: file . main.c, line 70. Breakpoint 1 at 0x80490b4: file . main.c, line 70. (gdb)
Comandos do gdb
Comandos do gdb
rr
Executa o programa do inícioExecuta o programa do início
cc
cc
Comandos do gdb
Comandos do gdb
p <expressao>
p <expressao>
Mostra o resultado da expressão. Esta pode ser Mostra o resultado da expressão. Esta pode ser
composta por operações, chamadas de funções e composta por operações, chamadas de funções e variáveis. Pode
variáveis. Pode--se inclusive alterar o conteúdo da se inclusive alterar o conteúdo da variáveis. Pode
variáveis. Pode--se inclusive alterar o conteúdo da se inclusive alterar o conteúdo da variável. variável. Ex:Ex: (gdb) p start (gdb) p start $3 = {wall = 1} $3 = {wall = 1} (gdb) p (start=2) (gdb) p (start=2) $4 = {wall = 2} $4 = {wall = 2} (gdb) p start (gdb) p start $5 = {wall = 2} $5 = {wall = 2}
Comandos do gdb
Comandos do gdb
L (ele não é
L (ele não é case sensitive
case sensitive
))
Lista 10 linhas do código, a partir do ponto Lista 10 linhas do código, a partir do ponto
atual de execução ou do fim da listagem atual de execução ou do fim da listagem anterior.
anterior. anterior. anterior.
Possui mais opçõesPossui mais opções
Comandos do gdb
Comandos do gdb
where
where
Indica o ponto atual de execução do Indica o ponto atual de execução do
programa. programa.
Útil para localizar os tão temidos Útil para localizar os tão temidos SEGFAULTSEGFAULT
Comandos do gdb
Comandos do gdb
n <num_steps>
n <num_steps>
Avança uma (ou num_steps) linha(s) de Avança uma (ou num_steps) linha(s) de
código na execução do programa. código na execução do programa.
Não entra em subrotinasNão entra em subrotinas
Não entra em subrotinasNão entra em subrotinas
s <num_steps>
s <num_steps>
Comandos do gdb
Comandos do gdb
kk
Interrompe a execução do programa atual.Interrompe a execução do programa atual.