linux下使用gdb调试nasm程序
来源:互联网 发布:ftp上传工具 mac版 编辑:程序博客网 时间:2024/06/06 17:45
一
nasm -f elf name.asm
ld -m elf_i386 -o name name.o -Ttext 0x1000
gdb name
二
nasm -f elf64 name.asm
ld -o name name.o -Ttext 0x1000
gdb name
三
nasm -f elf64 name.asm -g -F stabs
gcc -o name name.o -g
gdb name
昨天刚接触nasm,按网上的资料,编译、连接和调试代码用的是第一种方式(因为系统是x86_64架构的)。后来又看了nasm和ld指令的参数描述,改用第二种方式,编译时直接生成elf64格式的object文件。
可用gdb断点调试时发现没有符号表(No symbol table is loaded),仔细看时,才发现刚运行gdb时已经有提示了(Reading symbols from /home/wmy/桌面/t...(no debugging symbols found)...done.)。查阅资料发现:nasm好像确实不能像gas 那样,在生成的目标代码中包含符号表(gas加上参数--gstabs,同时ld不使用参数 -s 就行了)。
又在网上查阅各种关于调试nasm的资料,终于发现了上面的第三种方式,不过之前用ld连接时,指定入口函数的格式如下:
global _start
_start:
……
……
否则,提示错误 “cannot find entry symbol _start”(真有一种java中找不到或无法加载主类的感觉),而这样的代码用gcc编译,又会出现“对‘main’未定义的引用” 的错误提示。所以,此时又要将 _start 修改成main。这样用gdb调试时就有符号表了(Reading symbols from /home/wmy/桌面/t...done)。
- linux下使用gdb调试nasm程序
- linux下使用gdb调试程序
- Linux下使用GDB工具调试程序
- linux下使用GDB调试程序
- Linux下gdb调试程序
- Linux下gdb调试程序
- linux下gdb调试程序
- 【GDB】Linux下调试程序
- Linux下使用GDB调试程序的方法
- Linux下,使用GDB调试程序的方法
- 如何使用linux下gdb来调试python程序
- Linux下使用gdb调试C/C++程序
- Linux下使用gcc和gdb调试程序
- Linux环境下使用GDB调试C程序
- Linux下使用gdb调试多进程与多线程程序
- Linux下gdb调试程序的常用命令
- linux 下 gdb 调试c/c++ 程序
- linux下的GDB调试程序
- spin_lock浅析
- 判断一个整数不是2的阶次方树
- C++函数指针实例详解(篇四)
- ArcGIS For Flex报错
- GVIM: 手把手教你把Vim改装成一个IDE编程环境(图文)
- linux下使用gdb调试nasm程序
- GVIM: 手把手教你把Vim改装成一个IDE编程环境(图文) -- 续1
- Struts2:通过action标签向页面传值
- java自带dom工具使用实例
- #ifdef __cplusplus 倒底是什么意思?
- struts2连接数据库实现用户注册与登录
- C++函数指针实例详解(篇五)
- 【Leetcode】Sort List JAVA实现
- ArcGIS For Flex报错二