'Get info of a specific breakpoint
TODO: support catchpoint, watchpoint
Args:
- num: breakpoint number
Returns:
- tuple (Num(Int), Type(String), Disp(Bool), Enb(Bool), Address(Int), What(String), commands(String))'

def get_breakpoint(self, num):

    out = self.execute_redirect(('info    breakpoints    %d' % num))
    if ((not out) or ('No    breakpoint' in out)):
        return None
    lines = out.splitlines()[1:]
    p = re.compile('^(\\d*)\\s*(.*breakpoint)\\s*(keep|del)\\s*(y|n)\\s*(0x[^    ]*)\\s*(.*)')
    m = p.match(lines[0])
    if (not m):
        p = re.compile('^(\\d*)\\s*(.*point)\\s*(keep|del)\\s*(y|n)\\s*(.*)')
        m = p.match(lines[0])
        if (not m):
            return None
        else:
            (num, type, disp, enb, what) = m.groups()
            addr = ''
    else:
        (num, type, disp, enb, addr, what) = m.groups()
    disp = (True if (disp == 'keep') else False)
    enb = (True if (enb == 'y') else False)
    addr = to_int(addr)
    m = re.match('in.*at(.*:\\d*)', what)
    if m:
        what = m.group(1)
    elif addr:
        what = ''
    commands = ''
    if (len(lines) > 1):
        for line in lines[1:]:
            if ('already    hit' in line):
                continue
            commands += (line + '\n')
    return (num, type, disp, enb, addr, what, commands.rstrip())
