分类 默认分类 下的文章

gdb python debug

如果是 python 2.7

  1. 先安装 gdb 和 python2.7 debug package
    sudo apt-get install gdb python2.7-dbg

完全按照这个: https://wiki.python.org/moin/DebuggingWithGdb

  1. 启动gdb
    sudo gdb /usr/bin/python2.7-dbg 9193

这个 python2.7-dbg 即使上面安装之后, 在 /usr/bin/ 目录下. 9193 是我的目标 python 进程号 pid

  1. 不过还是现实 ?? 说明glibc 的调试符号没有加载
    xiatian_art-4167758___usr_bin.png
  2. 安装 glibc 的调试符号表
    sudo apt-get install libc6-dbg
  3. 使用上面的命令进来之后, 还是现实 ?? , 这个时候, 要重启这个进程 使用 c
    c

然后 Ctr + C

  1. 再次使用 bt , 已经可以看到符号.
    xiatian_art-416usr_bin.png

leetcode 刷题体会

  1. 检查边界;
  2. 拿最简单的去试一试, 逐渐复杂, 找到规律;
  3. 从最笨的方法开始, 写完之后, 从某个点渐渐优化;
  4. 空间换时间;
  5. 充分运用约束条件, 比如用参数里面的 Array, 不要新 malloc 一个;
  6. 特殊的约束条件, 用特殊的值;

c 代码调用汇编代码

汇编 world.asm

SECTION .TEXT
    GLOBAL calc

calc:
    mov rax,rdi
    add rax,r9
    ret

编译:

 $ nasm -f elf64 world.asm -o world.o

C 代码:

#include <stdio.h>

int main(int argc, char *argv[]) {
    extern int calc(int, int, int, int, int, int);
    printf("%d\n", calc(1, 3, 5, 7, 9, 11));
    return 0;
}

合在一块编译成目标文件 并执行

 $ gcc hello.c world.o -o hello
 $ ./hello