¹ØÓÚqemuµ÷ÊÔlinuxÄں˵ÄÎÊÌâ
ÎÒÔÚÍøÉÏÕÒÁ˺ܶà×ÊÁÏ£¬µ«ÊǹØÓÚʹÓÃqemuµ÷ÊÔÄں˵Ķ«Î÷¾ÍûÕÒµ½£¬Ö»ÓÐÒÔÏÂÒ»¸öÍøÒ³£º
²½ÖèÈçÏÂ
1¡£Æô¶¯Qemu,ʹÓôóS²ÎÊý qemu -kernel bzImage -hda linux-0.2.img -append "root=/dev/hda" -S£¬ÏµÍ³»áÌø³öÒ»¸öºÚÏÔʾ½çÃæ£¬ÎÞÈκÎÄÚÈÝ¡£´Ëʱͨ¹ý ctrl+alt+1 Óë ctrl+alt+2¿ÉÒÔÇл»£¬Ò»¸öÊÇÆÁÄ»Êä³ö£¬Ò»¸öÊÇqemu¿ØÖÆÌ¨¡£
2¡£Çл»µ½qemu¿ØÖÆÌ¨£¬ÊäÈëÃüÁîgdbserver 1234
3¡£Í¬Ê±´ò¿ªgdb³ÌÐò£¬Í¨¹ýqemu˵Ã÷ÖÐÌṩµÄ·½·¨¼È¿É½øÐе÷ÊÔ£º
Then launch gdb on the 'vmlinux' executable:
> gdb vmlinux
In gdb, connect to QEMU:
(gdb) target remote localhost:1234Äã¿ÉÒÔÉèÖöϵãÈçbreak start_kernel£¬Í£ÔÚlinuxÄں˵ĵÚÒ»¸öc³ÌÐòÖ®ÉÏ¡£
µ«ÊÇÎÒÔÚʹÓõÄÊǺܲ¢Ã»ÓÐÏÔʾIn gdb, connect to QEMU: £¬²»ÖªµÀÊDz»ÊÇÎÒµÄqemuûÓÐÁ¬ÉÏgdb£¬ÇëÎÊÓ¦¸ÃÈçºÎʹÓÃqemuµ÷ÊÔlinuxÄںˣ¿£¿£¿£¿
¸ß·ÖÏàËÍ£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡£¡
ÎÒÊÔÑé¹ý£¬²»ÐеÄ
qemu×ÜÊǵȴýÁ¬½Ó£¬¶øgdbÕâ¶ËnextÒ²²»Ö´ÐУ¬ËµboundÖ®ÀàµÄ¶«Î÷
ÎÒÒ²ÊÇÐÄÁ¦½»´á°¡
Ôõô°ì£¿»¹ÓÐûÓÐÖªµÀµÄ£¬Ð¡µÜÔÚ´Ëл¹ýÁË
°¥ ½áÌù°É ÕæÊÇ..........
Ïà¹ØÎÊ´ð£º
linux Ͻø³Ì´´½¨¡£
ʹÓÃvfork() º¯Êý´´½¨ÁË×Ó½ø³Ìºó£¬×Ó½ø³ÌÏÈÐÐÖ´ÐУ¬ÔÚ×Ó½ø³Ìµ÷ÓÃexit»òexec֮ǰ¸¸½ø³Ì´¦ÓÚʲô״̬£¿£¿
²»ÖªµÀ£»Ê×ÏÈδ±ØÊÇ×Ó½ø³ÌÏÈÖ´ÐУ»µÚ2¸¸½ø³ÌÒ²´¦ÓÚÖ´ÐÐ״̬£»ÖÁÓÚ¸¸½ø³Ìµ½µ××öʲô£»¿´´ ......
ÓÉÓÚÎҲŸոսӴ¥socket±à³Ì£¬×Ô¼ºÐ´ÁËÒ»¸ö¼òµ¥³ÌÐò£¬µ«¾ÍÊÇÔÚÔËÐеÄʱºò³öÏֶδíÎó£¬ÎÞ·¨½â¾ö£¬ÏÖÔÚÎÒ°ÑÔ´´úÂëÌù³öÀ´£¬Çë¸÷λ´óϺָÕýһϣ¡Ð»Ð»£¡
#include<stdio.h>
#include<stdlib.h>
#include& ......
´úÂëÌ«¶à£¬²»ºÃÌù£¬
´óÖÂÉæ¼°µ½ÕâЩ£º
char *arg[MAXSIZE];
char *buffer[MAXSIZE];
.........
arg[k]=(char*)malloc(sizeof(char)*j);
strcpy(arg[k],buffer);
.................[color=#993300][/color]
µ ......
ÈçÌ⣬лл
LinuxÊÇ¿ªÔ´µÄ£¬ÄãËÑË÷LinuxÔ´³ÌÐòĿ¼¾Í¿ÉÒÔÕÒµ½shellÃüÁîtimeµÄʵÏÖ´úÂë¡£
kernel/time.c
ÄãµÄÍ·ÏñºÜ²»´íѽ
ʹÓú¯ÊýtimeΪ½ø³ÌÌṩµ±Ç°µÄʱ¼ä
#include<time.h>
time_t time(time ......