我正在GDB中进行一些汇编级调试.有没有办法让GDB以与显示当前源代码行相同的方式向我显示当前的汇编指令?每个命令后的默认输出如下所示:
0x0001433f 990 Foo::bar(p);
Run Code Online (Sandbox Code Playgroud)
这给了我当前指令的地址,但是我必须继续参考输出,disassemble以便查看我当前正在执行哪条指令.
在一次采访中,我遇到了一个问题:
您的朋友给了您一个源代码文件,该文件在控制台上打印斐波那契数字.请注意,main()块为空,并且其中没有任何语句.
解释这是如何可能的(提示:全局实例!)
我真的想知道这个,这样的事情怎么可能!
将可执行文件加载到gdb后,如何在执行第一条指令之前在入口点中断?
我正在分析的可执行文件是一段加密的恶意软件,所以break main绝对没有.
可能重复:
main()是否真的启动了C++程序?
可以在程序启动前调用我的函数吗?我该怎么做这项工作C++还是C?
什么是c ++中对象的动态初始化?
请用一个简单的例子来解释......
在C++中没有静态构造函数的基本原理是什么?
如果允许,我们将以非常有组织的方式在一个地方初始化其中的所有静态成员,如下所示:
//illegal C++
class sample
{
public:
static int some_integer;
static std::vector<std::string> strings;
//illegal constructor!
static sample()
{
some_integer = 100;
strings.push_back("stack");
strings.push_back("overflow");
}
};
Run Code Online (Sandbox Code Playgroud)
在静态构造函数的缺失中,很难有静态向量,并用值填充它,如上所示.静态构造函数优雅地解决了这个问题.我们可以以非常有组织的方式初始化静态成员.
那么为什么'C++没有静态构造函数?毕竟,其他语言(例如,C#)具有静态构造函数!
c++ language-features constructor language-design static-constructor
如何更改用gcc编译的C程序的入口点?
就像在下面的代码中一样
#include<stdio.h>
int entry() //entry is the entry point instead of main
{
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我遇到了这个问题,询问如何在C中的main()之前执行代码,并提到C++的策略.我主要住在应用程序空间,所以在main()之前执行从未发生过.什么样的东西需要这种技术?
是否可以避免C程序中的入口点(主).在下面的代码中,是否可以在func()不通过main()以下程序调用via的情况下调用该调用?如果是,如何做,何时需要,为什么要给出这样的规定?
int func(void)
{
printf("This is func \n");
return 0;
}
int main(void)
{
printf("This is main \n");
return 0;
}
Run Code Online (Sandbox Code Playgroud) c compiler-construction operating-system function entry-point
在msvc8上测试后,我发现:
在进入main()之前调用这三个东西.
我的问题是:
c++ ×6
c ×4
entry-point ×2
gdb ×2
assembly ×1
constructor ×1
dynamic ×1
function ×1
object ×1
startup ×1