相关疑难解决方法(0)

如何在构建目标之外生成gcc调试符号?

我知道我可以使用-g选项生成调试符号.但是,符号将嵌入目标文件中.gcc可以在结果可执行文件/库之外生成调试符号吗?像Windows VC++编译器的.pdb文件一样.

debugging gcc pdb-files

167
推荐指数
5
解决办法
9万
查看次数

系统调用如何在Linux上实际发生?

灵感来自这个问题

如何强制GDB反汇编?

并与此相关

什么是INT 21h?

如何在Linux下实际发生系统调用?执行调用时会发生什么,直到调用实际的内核例程?

linux internals system-calls linux-kernel

9
推荐指数
2
解决办法
2404
查看次数

用于反汇编C++可执行文件的最佳Linux工具

哪种工具最适合反汇编C++可执行文件?我正在寻找像OllyDbg这样的东西,但是对于Linux.

编辑:对不起,忘了告诉我我也想调试,而不仅仅是看到asm代码.

编辑2:"最好的"我的意思是 - "最好的Windows是OllyDbg - 可以看到asm代码,可以调试,它是用户友好和非常强大.哪一个最适合Linux".

c++ linux debugging disassembly

8
推荐指数
1
解决办法
7090
查看次数

在gdb中,如何反汇编先前的地址指令?

我们知道,在给定地址(包括)之后反汇编指令可以通过以下方式实现:

x/5i address
Run Code Online (Sandbox Code Playgroud)

这将打印5条指令,但如何拆解前一条指令?

我正在调试JIT代码,所以像拆解一行这样的东西不起作用.我可以反汇编包含地址的随机范围:

disas address-10 address+10
Run Code Online (Sandbox Code Playgroud)

但这很尴尬,你会看到(bad)(希望不在中间!)并开始担心你没有得到正确的东西.我正在寻找的是:

x/-5i address
Run Code Online (Sandbox Code Playgroud)

,但以上将无法正常工作.

gdb disassembly

7
推荐指数
1
解决办法
2299
查看次数

什么是INT 21h?

灵感来自这个问题

如何强制GDB反汇编?

我想知道INT 21h是一个概念.现在,我对内部有一些非常生疏的知识,但没有那么多细节.我记得在C64中你有定期中断和不可屏蔽中断,但我的知识在这里停止.你能告诉我一些线索吗?这是DOS相关策略吗?

operating-system interrupt internals low-level

5
推荐指数
3
解决办法
3万
查看次数

为什么我不能反汇编这个用户空间地址?

Dump of assembler code for function foo@plt:
0x0000000000400528 <foo@plt+0>: jmpq   *0x2004d2(%rip)        # 0x600a00 <_GLOBAL_OFFSET_TABLE_+40>
0x000000000040052e <foo@plt+6>: pushq  $0x2
0x0000000000400533 <foo@plt+11>:    jmpq   0x4004f8
(gdb) disas 0x4004f8
No function contains specified address.
Run Code Online (Sandbox Code Playgroud)

我知道0x4004f8是程序联动表的切入点,但为什么我不能disas呢?

gdb shared-libraries

2
推荐指数
1
解决办法
2007
查看次数