Feeds:
Posts
Comments

Archive for March, 2009

It’s been a while since I last talked about Python scripting support in GDB. Mostly because I’ve been focusing on getting stuff from the branch merged into CVS HEAD, so that GDB 7.0 can have some useful Python bindings.

The latest two patches committed upstream are for creating convenience functions in Python, and fo manipulating a program’s stack frames as Python objects. So, what can you do with those? I’ll borrow an example from Tom Tromey here: suppose you want to set a breakpoint which triggers only when the code is called by one specific function. You can create a convenience function like this:

import gdb
import re

class CallerIs (gdb.Function):
    """Return True if the calling function's name is equal to a string.
This function takes one or two arguments.
The first argument is the name of a function; if the calling function's
name is equal to this argument, this function returns True.
The optional second argument tells this function how many stack frames
to traverse to find the calling function.  The default is 1."""

    def __init__ (self):
        super (CallerIs, self).__init__ ("caller_is")

    def invoke (self, name, nframes = 1):
        frame = gdb.selected_frame ()
        while nframes > 0:
            frame = frame.older ()
            nframes = nframes - 1
        return frame.name () == name.string ()

CallerIs ()

And then create a conditional breakpoint using it, as in:

(gdb) break foo.c:42 if $caller_is ("some_function")

Or, to check the name of the grand-grand-caller of the code:

(gdb) break foo.c:42 if $caller_is ("some_function", 3)

Cool, huh? Now, why bother writing that big doc comment? GDB will use it as online help for the function you wrote:

(gdb) help function caller_is
Return True if the calling function's name is equal to a string.
This function takes one or two arguments.
The first argument is the name of a function; if the calling function's
name is equal to this argument, this function returns True.
The optional second argument tells this function how many stack frames
to traverse to find the calling function.  The default is 1.

One other patch which was merged in HEAD enables creating new GDB commands in Python, so you can write new commands to do some frame tricks too!

If you’d like to know more about the Python scripting work in GDB, I suggest you read the series of blog posts from Tom Tromey on this subject. It’ll give you a pretty good idea of what we have in the Python branch, and the direction we’re heading. Just keep in mind that some method names and syntax changed since he wrote that. Refer to the GDB manual in the Python branch (“make gdb.pdf” in gdb/doc/) or the example scripts (also in the Python branch, in gdb/python/lib/gdb/) for up-to-date details.

Read Full Post »

Hoje no twitter um tal de Instituto Millenium começou a me seguir. Ainda não manjo muito de twitter, mas já deu pra perceber que certas pessoas e instituições ficam seguindo pessoas ao léu como forma de se promover ou propagandear de forma não solicitada (i.e., spam). Mas não é esse ponto que quero destrinchar agora.

Enfim, eu fiquei curioso pra saber o que é esse tal instituto (pois é, infelizmente spam funciona). Fui no website, li algumas seções da parte institucional. Dizem na seção “Quem somos”:

O Instituto Millenium é uma organização sem fins lucrativos, sem vinculação político-partidária, que promove valores fundamentais para a prosperidade e o desenvolvimento humano da sociedade brasileira.

E na seção “Carta de Princípios”:

O Instituto Millenium é uma associação de fins não econômicos, sem fins lucrativos, que será enquadrada sob a lei das Organizações da Sociedade Civil de Interesse Público (OSCIP), independente de qualquer grupo político, religioso, empresarial ou governamental, mantida por doações de indivíduos, fundações ou empresas.

[…]

O Instituto Millenium não aceita contribuições que impliquem posicionamento predeterminado diante de qualquer tema ou outro procedimento que de alguma forma comprometa a integridade intelectual de seus trabalhos.

Os destaques em negrito são meus, não do texto original. Parece muito bom e muito bonito, um grupo de pessoas imparciais tentando promover mudanças na sociedade. Só que tem dois problemas aí. Um deles você percebe quando começa a ver a lista de membros e diretores do instituto. Tem dois ex-presidentes do Banco Central, dois altos executivos da Globo, três ou quatro presidentes ou sócios de grandes bancos privados, três ou quatro jornalistas  ou ex-jornalistas da Rede Globo, o presidente do Grupo Gerdau, o presidente do Grupo Abril, e por aí vai.

Ou seja, eles estão nos chamando de idiotas ao se apresentarem como um grupo sem vinculação política. É óbvio que representam um segmento bastante específico da sociedade, com muito poder e articulação política.

O outro problema é sistêmico no jornalismo brasileiro: apresentar-se como neutro e isento, quando na realidade isso não existe em grupo nenhum, em lugar nenhum. Qual o problema de dizer claramente que sua linha editorial defende uma orientação política X? Isso é comum nos EUA e em outros países. Ao invés disso, aqui existe essa palhaçada.

Isso é só mais uma instância que confirma o que venho reparando a muito tempo, e que estava planejando abordar neste blog: o jornalismo no Brasil não cumpre sua função social, que é de informar a sociedade sobre questões importantes da atualidade de tal forma que dê embasamento às pessoas a formarem sua própria opinião a respeito dessas questões. Não é necessário ser imparcial para isso (até por que é impossível sê-lo nas questões mais importantes), basta deixar claro qual a linha editorial do veículo de comunicação para que as pessoas possam ponderar o que está sendo veiculado.

Ao invés disso, o jornalismo brasileiro deturpa e filtra propositadamente o que divulga, com objetivos claros e bem definidos que beneficiam o setor da sociedade que representam, ao mesmo tempo em que se pintam de cordeiros e bastiões da justiça e imparcialidade.

Sinceramente, se você está lendo este texto e estuda ou trabalha na área de jornalismo, deveria em primeiro lugar sentir vergonha de seus colegas, que criaram e mantêm essa lama. Em segundo lugar, deveria orientar sua carreira de forma a combater essa situação.

Read Full Post »

Se você mora em Campinas, aqui vai uma boa dica: a brito serviços e autopeças fica aberta até as 22h de segunda a sábado, e “só” até as 18hs no domingo. Fala sério!

Eles trabalham com parte elétrica, mecânica, lataria e pintura. Quem me indicou disse que no que se refere à parte elétrica, eles são muito bons. Eu mesmo não tenho elementos suficientes pra dizer. Também não sei como eles são na parte mecânica.

Fica na João Jorge. Na direção de quem vai para a rótula, é um pouco depois (e do outro lado da rua) do mega-templo da universal que tem lá. Fone: 3272-6357.

Read Full Post »

I’d like to be able to say this every once in a while:

All in all, it was a pretty crazy year. My life kind of turned upside down and I found myself to be very often far removed from anything resembling a comfort zone. I expect 2009 to be pretty crazy as well.

http://she.geek.nz/archives/528-2008-summary.html

Read Full Post »

2007

Cracóvia, 03 de junho de 2007.

Vivo no topo de uma plataforma de pedra. Não é muito espaçosa,
e não há mais ninguém aqui. Não há muita luz, somente uma eterna penumbra.
Na distância vejo outras pessoas vivendo na mesma situação, separadas por abismos.

Às vezes agito os braços e grito, tentando me comunicar, fazer amizade,
conhecer essas pessoas. Às vezes funciona, às vezes sou mal-interpretado
ou mesmo ignorado. Às vezes essas pessoas agitam os braços e gritam,
tentando se comunicar, fazer amizade, me conhecer. Às vezes funciona,
às vezes interpreto mal ou mesmo ignoro.

Fico imaginando como seria se não houvesse esse abismo nos
separando. Poderíamos realmente conhecer as pessoas, festejar, abraçar.

Mas o que se pode fazer? Não há como eliminar um abismo.

O melhor que posso fazer é tentar conhecer as pessoas a partir da margem.
Vejo que algumas pessoas conseguem fazer isso razoavelmente bem. Eu não.
Mas sempre se pode fazer tentativas.

Thiago Jung Bauermann

Read Full Post »

aderindo à moda

Acabei de criar uma conta no identi.ca e um mirror no twitter. Vamos ver se essa brincadeira é divertida mesmo.

Pra minha surpresa, o username bauermann estava disponível nos dois sites! Esse tipo de coisa compensa a encheção de saco de ter que ficar soletrando meus sobrenomes cada fez que me registro em algo, ou ligo em algum SAC (ontem mesmo tive que fazer isso)…

Em compensação, todos os outros Bauermann do Brasil e do mundo devem estar putos pois eu sempre pego esse username (até hoje nunca aconteceu de bauermann não estar disponível como username, talvez com exceção do gmail, mas não lembro).

Achei esquisito o twitter limitar o tamanho do nome completo pra 20 caracteres. Tive que dropar o Jung lá. O identi.ca não tem esse problema. Mas gostei do twitter usar recapcha.

O bizarro foi ver um link “skip this step” logo embaixo do botão de “finish” na última etapa do cadastro do twitter. Até agora estou me perguntando o que acontece se clicar lá. 🙂

Read Full Post »