什么是调试器用C语言写的程序和汇编写的程序 用的调试工具一样吗
答案:1 悬赏:60 手机版
解决时间 2021-01-27 02:13
- 提问者网友:姑娘长的好罪过
- 2021-01-26 19:35
什么是调试器用C语言写的程序和汇编写的程序 用的调试工具一样吗 UBUNTU LINUX下有哪些汇编调试器 和调试器 调试器 和反汇编一样吗?什么是反汇编工具.汇编程序和C程序的调试有什么不同 能用同一种吗 LINUX下的KDBG我的装好了不能使用 而GDB又不清楚到底怎么回事
最佳答案
- 五星知识达人网友:三千妖杀
- 2021-01-26 20:16
调试器就是调试程序用的,能够通过设置断点、步进等方式交互式的控制程序的运行,并查看程序实时的运行状况(比如查看运行到某一位置时变量的值、查看函数调用记录、查看栈的内容等),以及查看编译后生成的汇编指令等。
一般来说调试器调试程序要求被调试的程序是debug模式编译的(gcc -g),即包含debug symbol……也就是变量名函数名之类的内容;一般编译生成的程序则不包含上述内容,因此很难准确定位函数或变量。反汇编工具和调试器的主要区别就在于此:反汇编基本只能查看汇编指令(部分动态语言如.net可能可以部分还原出源码),因此难度自然比通过调试器调试debug程序要大得多。
总的来说调试器用来调试自己编译的程序(除非到手的可执行文件是包含symbol的),反汇编则是对付没有源码的程序……
一般来说调试器都能调试c语言和汇编语言程序(因为同一平台下本质是一样的……),linux下最好用的自然毫无疑问是gdb
gdb使用其实很简单,自己百度一下就行,基本就是:
1、首先安装gdb和debug symbols
2、用debug模式编译程序(gcc选项添加-g)
3、通过gdb启动目标程序(比如main) gdb main
4、然后就进入gdb界面了
通过break设置断点,run/continue/step控制运行,info查看各种信息,print 变量名或表达式查看值,backtrace查看函数调用记录,disassemble看汇编代码等等……
此外gdb还支持设置宏等高级功能……
可以说gdb用的好能把c语言用出交互式脚本语言的感觉,对于写程序十分有帮助
一般来说调试器调试程序要求被调试的程序是debug模式编译的(gcc -g),即包含debug symbol……也就是变量名函数名之类的内容;一般编译生成的程序则不包含上述内容,因此很难准确定位函数或变量。反汇编工具和调试器的主要区别就在于此:反汇编基本只能查看汇编指令(部分动态语言如.net可能可以部分还原出源码),因此难度自然比通过调试器调试debug程序要大得多。
总的来说调试器用来调试自己编译的程序(除非到手的可执行文件是包含symbol的),反汇编则是对付没有源码的程序……
一般来说调试器都能调试c语言和汇编语言程序(因为同一平台下本质是一样的……),linux下最好用的自然毫无疑问是gdb
gdb使用其实很简单,自己百度一下就行,基本就是:
1、首先安装gdb和debug symbols
2、用debug模式编译程序(gcc选项添加-g)
3、通过gdb启动目标程序(比如main) gdb main
4、然后就进入gdb界面了
通过break设置断点,run/continue/step控制运行,info查看各种信息,print 变量名或表达式查看值,backtrace查看函数调用记录,disassemble看汇编代码等等……
此外gdb还支持设置宏等高级功能……
可以说gdb用的好能把c语言用出交互式脚本语言的感觉,对于写程序十分有帮助
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯