我试过b但似乎不是:
(gdb) p/b 0x0000000000400398
Size letters are meaningless in "print" command.
Run Code Online (Sandbox Code Playgroud)
有这样的转换吗?
我只需要一个hello world演示来查看机器代码实际上是如何工作的.
虽然windows的EXE和linux'ELF接近机器代码,但它不是PURE
如何编写/执行PURE机器代码?
从手册:
void __halt_compiler ( void )
Run Code Online (Sandbox Code Playgroud)
该函数停止执行编译器.这对于在PHP脚本中嵌入数据非常有用,例如安装文件.
注意:
__halt_compiler()只能从最外层范围使用.
任何人都可以提供这个功能有用的实际案例吗?
成功时,子进程的PID在父进程的执行中返回,并在子进程的执行中返回0.
p = fork();
Run Code Online (Sandbox Code Playgroud)
我对它的手册页感到困惑,p等于0或PID?
我认为区别在于declaration没有参数类型......
为什么这样做:
int fuc();
int fuc(int i) {
printf("%d", i);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
但这无法编译:
int fuc();
int fuc(float f) {
printf("%f", f);
return 0;
}
Run Code Online (Sandbox Code Playgroud)
随着消息:
错误:'fuc'的冲突类型.注意:具有默认促销的参数类型不能与空参数名称列表声明匹配
我已经配置了所有CONFIG_DEBUG_相关选项y,但是当我尝试调试内核时,它说没有找到调试符号:
gdb /usr/src/linux-2.6.32.9/vmlinux /proc/kcore
Reading symbols from /usr/src/linux-2.6.32.9/vmlinux...(no debugging symbols found)...done.
Run Code Online (Sandbox Code Playgroud)
为什么?
[root@woyo test]# strace -o /tmp/lsof.strace -p 5625
Process 5625 attached - interrupt to quit
q
Run Code Online (Sandbox Code Playgroud)
有谁知道?
[root@xxx memcached-1.4.5]# objdump -R memcached-debug |grep freeaddrinfo
0000000000629e10 R_X86_64_JUMP_SLOT freeaddrinfo
Run Code Online (Sandbox Code Playgroud)
...
(gdb) disas freeaddrinfo
Dump of assembler code for function freeaddrinfo:
0x00000037aa4baf10 <freeaddrinfo+0>: push %rbp
0x00000037aa4baf11 <freeaddrinfo+1>: push %rbx
0x00000037aa4baf12 <freeaddrinfo+2>: mov %rdi,%rbx
Run Code Online (Sandbox Code Playgroud)
所以我知道freeaddrinfo是一个动态链接的函数,但是如何知道.so它的定义?
#define max(a,b) \
({ typeof (a) _a = (a); \
typeof (b) _b = (b); \
_a > _b ? _a : _b; })
Run Code Online (Sandbox Code Playgroud)
为什么不简单(a>b ? a : b)?