Posso especificar que quero que o gdb quebre na linha x quando char* x
aponta para uma string cujo valor é igual "hello"
? Se sim, como?
c
debugging
gdb
conditional-breakpoint
341008
fonte
fonte
strncmp
estrstr
são outras funções úteis da consulta C.Respostas:
Você pode usar
strcmp
:20
é o número da linha,x
pode ser qualquer nome de arquivo ey
qualquer variável.fonte
No symbol "strcmp" in current context.
run
por isso para que as bibliotecas dinâmicas sejam carregadas. Para fonte, google-lo e encontrar: stackoverflow.com/questions/10000335/... :-)$_streq
O método @tlwhitec é melhor.Em algumas implementações, o gdb pode não saber o tipo de retorno do strcmp. Isso significa que você teria que lançar, caso contrário, sempre seria avaliado como verdadeiro!
fonte
Desde o GDB 7.5, você pode usar estas Funções de Conveniência nativas :
Parece bem menos problemático do que ter que executar um "estrangeiro"
strcmp()
na pilha do processo cada vez que o ponto de interrupção é atingido. Isso é especialmente verdadeiro para depurar processos multithread.Para o seu caso de demonstração, o uso seria
ou, se seu ponto de interrupção já existir e você quiser adicionar a condição a ele
$_streq
corresponde apenas a toda a cadeia; portanto, se você quiser algo mais astuto$_regex
, use , que suporta a sintaxe da expressão regular do Python .fonte