X-Git-Url: https://scm.lunaixsky.com/lunaix-os.git/blobdiff_plain/8758ba5a5c739a8eb0ac5331869b7a7b393ef6c3..8ce769cc52e91ff3cdb8eda4b1f5d8fe58241688:/README.md diff --git a/README.md b/README.md index 3d33abd..cdeecbe 100644 --- a/README.md +++ b/README.md @@ -1,14 +1,308 @@ +
+
+
+ ç®ä½ä¸æ | English +
+ # LunaixOS Project +LunaixOS - ä¸ä¸ªç®åçï¼è¯¦ç»çï¼POSIXå ¼å®¹çï¼ä½æ¿ï¼ï¼ï¼å¸¦ææµéä¸ªäººé£æ ¼çæä½ç³»ç»ãå¼åè¿ç¨ä»¥è§é¢æç¨å½¢å¼å¨Bilibiliåç°ï¼[ãä»é¶å¼å§èªå¶æä½ç³»ç»ç³»åã](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337)ã + +## å½åè¿åº¦ä»¥åæ¯æçåè½ + +该æä½ç³»ç»æ¯æx86æ¶æï¼è¿è¡å¨ä¿æ¤æ¨¡å¼ä¸ï¼éç¨å®å æ ¸æ¶æï¼ç®åä» æ¯æåæ ¸å¿ãå åç»æéç¨ç»å ¸ç3:1ååï¼å³ä½3GiBä¸ºç¨æ·å°å空é´ï¼0x400000 ~ 0xBFFFFFFFï¼ï¼å æ ¸å°å空é´éæ å°è³é«1GiBï¼0xC0000000 ~ 0xFFFFFFFFï¼ãå åç详ç»å¸å±å¯åè[LunaixOSå åå°å¾](docs/img/lunaix-os-mem.png) + +å¨ä¸è¿°å表ä¸ï¼åååºç®åææ¯æçæç¨åè½åç¹æ§ãå表项æç §é¡¹ç®æ¶é´æ³è¿è¡ååºæåã -ãä»é¶å¼å§èªå¶æä½ç³»ç»ç³»åãæ¯æä»åº ++ 使ç¨Multibootè¿è¡å¼å¯¼å¯å¨ ++ APIC/IOAPICä½ä¸ºä¸æç®¡çå¨å计æ¶å¨ ++ ACPI ++ èæå å ++ å å管ç䏿éå页ï¼Demand Pagingï¼ ++ é®çè¾å ¥ ++ å¤è¿ç¨ ++ 47个常è§çLinux/POSIXç³»ç»è°ç¨ï¼[éå½1](#appendix1)ï¼ ++ ç¨æ·æ¨¡å¼ ++ ä¿¡å·æºå¶ ++ PCI 3.0 ++ PCIe 1.1 (WIP) ++ Serial ATA AHCI ++ æä»¶ç³»ç» (WIP) ++ è¿ç¨GDB串å£è°è¯ (COM1@9600Bd) -[ç¸å ³è§é¢](https://space.bilibili.com/12995787/channel/collectiondetail?sid=196337) +å·²ç»æµè¯è¿çç¯å¢ï¼ + ++ QEMU (>=7.0.0) ++ Bochsï¼SATAåè½ä¸æ¯æï¼ ++ Virtualbox ++ Dell G3 3779 ## ç®å½ç»æ | | | |-----|------| -| [lunaix-os](lunaix-os/) | LunaixOSé¡¹ç® | -| `practice-c*` | PPTä¸è¡¥å ææï¼>= EP5.3ï¼ | -| [previous-slides](previous-slides/) | 以åçPPTï¼< EP5.3ï¼ | -| [reference-material](reference-material/)| åèèµæ | +| [lunaix-os](lunaix-os/) | LunaixOSæºä»£ç | +| [slides](slides/) | è§é¢ä¸æç¨çå¹»ç¯çåè¡¥å ææ | +| [reference-material](reference-material/)| æ åï¼ææ¯ææ¡£ååèæç® | + +## ç¼è¯ä¸æå»º + +æå»ºè¯¥é¡¹ç®éè¦æ»¡è¶³ä»¥ä¸æ¡ä»¶ï¼ + ++ gcc (ç®æ å¹³å°: i686-elf) ++ binutils ++ make ++ xorriso ++ grub-mkrescue + +**注æï¼gccä¸è½æ¯æ¬æºèªå¸¦çï¼å¿ é¡»è¦ä»æºç ç¼è¯ï¼å¹¶é ç½®ç®æ å¹³å°ä¸ºï¼`i686-elf`ï¼ä»¥è¿è¡äº¤åç¼è¯ãé ç½®è¿ç¨å¯åè[éå½äºï¼ç¼è¯gccä½ä¸ºäº¤åç¼è¯å¨](#appendix2)ã** + +åè¥æ¡ä»¶æ»¡è¶³ï¼é£ä¹å¯ä»¥ç´æ¥æ§è¡`make all`è¿è¡æå»ºï¼å®æåå¯å¨çæç`build`ç®å½ä¸æ¾å°å¯å¼å¯¼çisoã + +æ¬é¡¹ç®æ¯æçmakeå½ä»¤ï¼ +| å½ä»¤ | ç¨é | +|---|---| +| `make all` | æå»ºéåï¼`-O2`ï¼ä½ç¦ç¨CSEç¸å ³çä¼å项 **â»** ï¼ | +| `make instable` | æå»ºéåï¼`-O2`ï¼å¼å¯CSEç¸å ³ä¼åï¼ | +| `make all-debug` | æå»ºéåè°è¯ç¨çéåï¼`-Og`ï¼ | +| `make run` | 使ç¨QEMUè¿è¡buildç®å½ä¸çéå| +| `make debug-qemu` | æå»ºå¹¶ä½¿ç¨QEMUè¿è¡è°è¯ | +| `make debug-bochs` | æå»ºå¹¶ä½¿ç¨Bochsè¿è¡è°è¯ | +| `make debug-qemu-vscode` | ç¨äºvscodeæ´å | +| `make clean` | å é¤buildç®å½ | + +**â»ï¼ç±äºå¨`-O2`模å¼ä¸ï¼GCCä¼è¿è¡CSEä¼åï¼è¿å¯¼è´LunaixOSä¼åºç°ä¸äºé叏奿ªã离谱çbugï¼ä»èå½±åå°åºæ¬è¿è¡ãå ·ä½åå æå¾ è°æ¥ã** + +## è¿è¡ä»¥åIssue + +è¿è¡è¯¥æä½ç³»ç»éè¦ä¸ä¸ªèæç£çéåï¼å¯ä»¥ä½¿ç¨å¦ä¸å½ä»¤å¿«éå建ä¸ä¸ªï¼ + +```bash +qemu-img create -f vdi machine/disk0.vdi 128M +``` + +å¦æä½ æ³è¦ä½¿ç¨å«çç£çéåï¼éè¦ä¿®æ¹`configs/make-debug-tool` + +æ¾å°è¿ä¸è¡ï¼ +``` +-drive id=disk,file="machine/disk0.vdi",if=none \ +``` + +ç¶åæ`machine/disk0.vdi`æ¿æ¢æä½ çç£çè·¯å¾ã + +æå¾å¤åæ³å»å建ä¸ä¸ªèæç£çï¼æ¯å¦[qemu-img](https://qemu-project.gitlab.io/qemu/system/images.html)ã + +å¨å¤§å¤æ°æ åµä¸ï¼æé½ä¼å°½éä¿è¯æ¬æºè¿è¡æ 误åï¼pushå°ä»åºä¸ãåæ¶ï¼è¯¥ç³»ç»æ¯ç»è¿èææºåçæºæµè¯ã妿åç°å¨ä½¿ç¨`make all`ä¹åï¼èææºä¸è¿è¡æ¥éï¼åä¸è¬æ¯ç¼è¯å¨ä¼åé®é¢ãè¿ä¸ªé®é¢ç¬è ä¸è¬å¾å¿«å°±ä¼ä¿®å¤ï¼å¦æä½ 使ç¨å«ççæ¬çgccï¼ç¬è çæ¬11.2ï¼ï¼åºç°äºæ¤é®é¢ï¼æ¬¢è¿æissueã请åè[éå½3ï¼Issueçæäº¤](#appendix3) + +ä¸é¢ååºä¸äºå¯è½ä¼åºç°çé®é¢ã + +#### é®é¢#1ï¼ QEMUä¸8042æ§å¶å¨æç¤ºæ¾ä¸å°ã + +è¿æ¯QEMUé ç½®ACPIæ¶çä¸ä¸ªbugï¼å¨7.0.0çä¸ä¿®å¤äºã + +#### é®é¢#2ï¼å¤è¿ç¨è¿è¡æ¶ï¼å¶å°ä¼åºç°General Protectioné误ã + +è¿å¾å¤§æ¦çæ¯åºç°äºç«ææ¡ä»¶ãè½ç¶æ¯ç¸å½ä¸å¯è½çãä½å¦æåºç°äºï¼è¿æ¯è¯·æissueã + +#### é®é¢#3ï¼Bochsæ æ³è¿è¡ï¼æç¤ºæ¾ä¸å°AHCIæ§å¶å¨ + +æ£å¸¸ï¼**å 为Bochs䏿¯æSATA**ã请使ç¨QEMUæVirtualBoxã + +## åèæç¨ + +**没æï¼ï¼** æ¬æç¨ä»¥å该æä½ç³»ç»å为ååï¼æ²¡æåºäºä»»ä½å¸é¢ä¸ç°è¡çæä½ç³»ç»å¼åæç¨ï¼ä¸å¹¶éæ¯åºäºä»»ä½ç弿ºå æ ¸çäºæ¬¡å¼åã + +为äºå¶ä½LunaixOSï¼ä½è èè´¹å¤§éæ¶é´åç²¾åé»ç ææ¯ææ¡£ï¼æåï¼ç论书ç±ä»¥åç°è¡å·¥ä¸æ åï¼ä»èå°½éä¿è¯äºç¥è¯ç䏿æ§ãï¼è¿æ ·ä¸æ¥ï¼è¯»è åå¬ä¼ä»¬ä¹ç®æ¯æ¿å°äºäºæçç¥è¯ï¼è䏿¯ä¸æï¼åæï¼çè³næçç¥è¯ï¼ã + +大é¨åçææ¡£åæ åå¯ä»¥å¨ä¸è¿°ç[reference-material](reference-material/)䏿¾å°ã + +å½ç¶ï¼æ¨ä¹å¯ä»¥åè以ä¸å表æ¥äºè§£ç°é¶æ®µçLunaixOSé½ä½¿ç¨äºåªäºèµæï¼æ¬å表ä¼éçå¼åè¿åº¦æ´æ°ï¼ï¼ + +#### æåï¼æ åï¼ææ¯ææ¡£ ++ [Intel 64 and IA-32 Architecture Software Developer's Manual (Full Volume Bundle)](https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html) ++ [ACPI Specification (version 6.4)](https://uefi.org/sites/default/files/resources/ACPI_Spec_6_4_Jan22.pdf) ++ IBM PC/AT Technical Reference ++ IBM VGA/XGA Technical Reference ++ 82093AA I/O Advanced Programmable Controller (IOAPIC) (Datasheet) ++ MC146818A (Datasheet) ++ Intel 500 Series Chipset Family Platform Controller Hub (Datasheet - Volume 2) ++ PCI Local Bus Specification, Revision 3.0 ++ PCI Express Base Specification, Revision 1.1 ++ PCI Firmware Specification, Revision 3.0 ++ Serial ATA - Advanced Host Controller Interface (AHCI), Revision 1.3.1 ++ Serial ATA: HIgh Speed Serialized AT Attachment, Revision 3.2 ++ SCSI Command Reference Manual ++ ATA/ATAPI Command Set - 3 (ACS-3) + +**å 责声æï¼PCIç¸å ³çæ åæç»è§£éæå½PCI-SIGææãæ¤å¤æä¾ç坿¬ä» ä¾ä¸ªäººå¦ä¹ 使ç¨ãä»»ä½åç¨ç®çé¡»åPCI-SIGè´ä¹°ã** + +#### çè®ºä¹¦ç± ++ *Computer System - A Programmer's Perspective Third Edition (CS:APP)* (Bryant, R & O'Hallaron, D) ++ *Modern Operating System* (Tanenbaum, A) ++ ãæ±ç¼è¯è¨ãï¼çç½ï¼ - ç¨äºå ¥é¨Intelè¯æ³çx86æ±ç¼ï¼å¯¹äºAT&Tè¯æ³ï¼æ¨èé 读CS:APPï¼ ++ ~~ãå¾®æºåç䏿¥å£ææ¯ã - ç¨äºå¤§è´äºè§£x86æ¶æçå¾®æºä½ç³»ï¼æ´å ç»è´çäºè§£å¯ä»¥é 读Intel Manualï¼~~ ï¼å·²è¿æ¶ï¼æ¨èé 读CS:APPï¼ + +#### ç½ç« ++ [OSDev](https://wiki.osdev.org/Main_Page) - æä¸æå «çåèï¼å¾å¤è¿æ¥äººçç»éªãä½è 主è¦ç¨äºä¸å¤èµææ¥è¯¢ä»¥åæ¶éï¼ææ¯æç®ï¼æåï¼æ åçç²ç¥æ»ç»ï¼ä»¥åå¼åç¯å¢/å·¥å ·é¾çæå»ºã ++ [FreeVGA](http://www.osdever.net/FreeVGA/home.htm) - 98å¹´çèµæºï¼å ³äºVGAç¼ç¨ææ¯çå®èç½ç«ã ++ GNU CC å GNU LD ç宿¹ææ¡£ã ++ [PCI Lookup](https://www.pcilookup.com/) - PCI设å¤ç¼å·æ¥è¯¢ + +#### å ¶ä» ++ Linux Manual - ç¨äºæ¥è¯¢*nix APIçä¸äºå ·ä½è¡ä¸ºã + + +## éå½1ï¼æ¯æçç³»ç»è°ç¨ + +**Unix/Linux/POSIX** +1. `sleep(3)` +1. `wait(2)` +1. `waitpid(2)` +1. `fork(2)` +1. `getpid(2)` +1. `getppid(2)` +1. `getpgid(2)` +1. `setpgid(2)` +1. `brk(2)` +1. `sbrk(2)` +1. `_exit(2)` +1. `sigreturn(2)` +1. `sigprocmask(2)` +1. `signal(2)` +1. `kill(2)` +1. `sigpending(2)` +1. `sigsuspend(2)` +2. `read(2)` +2. `write(2)` +2. `open(2)` +2. `close(2)` +2. `mkdir(2)`â» +2. `lseek(2)` +2. `readdir(2)` +2. `readlink(2)`â» +2. `readlinkat(2)`â» +2. `rmdir(2)`â» +2. `unlink(2)`â» +2. `unlinkat(2)`â» +2. `link(2)`â» +2. `fsync(2)`â» +2. `dup(2)` +2. `dup2(2)` +2. `symlink(2)`â» +2. `chdir(2)` +2. `fchdir(2)` +2. `getcwd(2)` +2. `rename(2)`â» +2. `mount(2)` +2. `unmount` (a.k.a `umount(2)`)â» +2. `getxattr(2)`â» +2. `setxattr(2)`â» +2. `fgetxattr(2)`â» +2. `fsetxattr(2)`â» +2. `ioctl(2)`â» +2. `getpgid(2)` +2. `setpgid(2)` + +**LunaixOSèªæ** + +1. `yield` +2. `geterrno` +3. `realpathat` + +( **â»**ï¼è¯¥ç³»ç»è°ç¨ææªç»è¿æµè¯ ) + +## éå½2ï¼ç¼è¯gccä½ä¸ºäº¤åç¼è¯å¨ + +注æï¼gccéè¦ä»æºç æå»ºï¼å¹¶é 置为交åç¼è¯å¨ï¼å³ç®æ å¹³å°ä¸º`i686-elf`ãä½ å¯ä»¥ä½¿ç¨æ¬é¡¹ç®æä¾ç[èªå¨åèæ¬](slides/c0-workspace/gcc-build.sh)ï¼è¿å°ä¼æ¶µçgccåbinutilsæºç çä¸è½½ï¼é ç½®åç¼è¯ï¼æ²¡ä»ä¹æ¶é´å»æç£¨èæ¬ï¼ç®ååªç¥éå¨ç¬è çUbuntuç³»ç»ä¸å¯ä»¥è¿è¡ï¼ã + +**æ¨è**æå¨ç¼è¯ã以ä¸ç¼è¯æ¥éª¤æ¬è¿èªï¼https://wiki.osdev.org/GCC_Cross-Compiler + +**é¦å å®è£ æå»ºä¾èµé¡¹ï¼** +```bash +sudo apt update &&\ + apt install -y \ + build-essential \ + bison\ + flex\ + libgmp3-dev\ + libmpc-dev\ + libmpfr-dev\ + texinfo +``` + +**å¼å§ç¼è¯ï¼** +1. è·å[gcc](https://ftp.gnu.org/gnu/gcc/)å[binutils](https://ftp.gnu.org/gnu/binutils)æºç +2. è§£åï¼å¹¶å¨å级ç®å½ä¸ºgccåbinutilæ°å»ºä¸é¨çbuildæä»¶å¤¹ + +ç°å¨åè®¾ä½ çç®å½ç»æå¦ä¸ï¼ +``` ++ folder + + gcc-src + + binutils-src + + gcc-build + + binutils-build +``` + +3. ç¡®å®gccåbinutilå®è£ çä½ç½®ï¼å¹¶è®¾ç½®ç¯å¢åéï¼`export PREFIX=<å®è£ è·¯å¾>` ç¶å设置PATHï¼ `export PATH="$PREFIX/bin:$PATH"` +4. è®¾ç½®ç®æ å¹³å°ï¼`export TARGET=i686-elf` +5. è¿å ¥`binutils-build`è¿è¡é ç½® +```bash +../binutils-src/configure --target="$TARGET" --prefix="$PREFIX" \ + --with-sysroot --disable-nls --disable-werror +``` +ç¶å `make && make install` + +6. ç¡®ä¿ä¸è¿°ç`binutils`å·²ç»æ£å¸¸å®è£ ï¼æ§è¡ï¼`which i686-elf-as`ï¼åºè¯¥ä¼ç»åºä¸ä¸ªä½äºä½ å®è£ ç®å½ä¸çè·¯å¾ã +6. è¿å ¥`gcc-build`è¿è¡é ç½® +```bash +../gcc-src/configure --target="$TARGET" --prefix="$PREFIX" \ + --disable-nls --enable-languages=c,c++ --without-headers +``` +ç¶åç¼è¯å®è£ ï¼å峿§è½ï¼å¤§çº¦10~20åéï¼ï¼ +```bash +make all-gcc &&\ + make all-target-libgcc &&\ + make install-gcc &&\ + make install-target-libgcc +``` +8. éªè¯å®è£ ï¼æ§è¡`i686-elf-gcc -dumpmachine`ï¼è¾åºåºè¯¥ä¸ºï¼`i686-elf` + +**å°æ°ç¼è¯å¥½çGCCæ°¸ä¹ æ·»å å°`PATH`ç¯å¢åé** + +è½ç¶è¿æ¯ä¸ä¸ªå¸¸è¯æ§çæä½ï¼ä½èèå°è®¸å¤äººé½ä¼å¿½ç¥è¿ä¸ä¸ªé¢å¤çæ¥éª¤ï¼å¨è¿éç¹æ¤ååºæç¤ºã + +è¦æ³å®ç°è¿ä¸ç¹ï¼åªéè¦å¨shellçé ç½®æä»¶çæ«å°¾æ·»å ï¼`export PATH="<ä¸è¿°çå®è£ è·¯å¾>/bin:$PATH"`ã + +è¿ä¸ªé ç½®æä»¶æ¯åå³äºä½ 使ç¨çshellï¼å¦zshå°±æ¯`${HOME}/.zshrc`ï¼bash忝`${HOME}/.bashrc`ï¼æè ä½ å«éº»ç¦çï¼æå¾åºåï¼ä½ ä¹å¯ä»¥ç´æ¥ä¿®æ¹å ¨å±ç`/etc/profile`æä»¶ï¼ä¸å³æ°¸é¸ï¼ä½ä¸æ¨èè¿æ ·åï¼ã + +è³äºå ¶ä»çæ åµï¼ç±äºè¿ä¸ªæ¥éª¤å ¶å®å¨ç½ä¸æ¯éå¤å¯æ¥çï¼æä»¥å°±ä¸å¨è¿éèµè¿°äºã + +## éå½3ï¼Issueçæäº¤ + +ç±äºç®åLunaixOS没æä¸ä¸ªå®å强大çå æ ¸è¿½è¸ªåè½ãåè¥Lunaixçè¿è¡åºç°ä»»ä½é®é¢ï¼è¿è¯·æç §ä»¥ä¸çæè¿°ï¼å¨Issueé颿ä¾è¯¦ç»çä¿¡æ¯ã + +æå¥½æä¾ï¼ ++ å¯ç¨äºå¤ç°é®é¢çæè¿°åæå¼ï¼å¦Lunaixè¿è¡å¹³å°ç软硬件é ç½®ï¼ ++ é误çç¶æè¿° ++ ï¼å¦å¯è½ï¼è¿è¡æªå¾ ++ éè¯¯æ¶æ¯ï¼å¦æç»åºï¼ ++ å¯åå¨ç¶æçdump ++ ï¼å¦å¯è½ï¼æä¾é误åçæ¶ï¼EIPéè¿çæä»¤ï¼ç²¾ç¡®å°å½æ°ï¼ãå¦æä½¿ç¨`make all-debug`ï¼ä¼æä¾`build/kdump.txt`ï¼ä½ å¯ä»¥å¨è¿éé¢å®ä½ãæè ä¹å¯ä»¥ç´æ¥`objdump` ++ ï¼å¦å¯è½ï¼èæå åæ å°ä¿¡æ¯ï¼QEMUä¸å¯ä½¿ç¨`info mem`æ¥çï¼ã + +## éå½4ï¼ä¸²å£GDBè¿ç¨è°è¯ + +LunaixOSå æ ¸éæäºæåºæ¬çGDBè¿ç¨è°è¯æå¡å¨ãå¯éè¿ä¸²å£COM1å¨9600æ³¢ç¹çä¸ä¸ä¹å»ºç«é¾æ¥ã使¯ï¼å¨å°GDBä¸å æ ¸é¾æ¥èµ·æ¥ä¹åï¼è¿éè¦è®©å æ ¸å¤å¨è°è¯æ¨¡å¼ä¸ã + +è¦è¿å ¥è°è¯æ¨¡å¼ï¼éè¦å¾ä¸²å£ï¼æ³¢ç¹çå¦ä¸ï¼åå ¥åè串 `0x40` `0x63` `0x6D` `0x63`ãæ¤æ¶ï¼å¦æå±å¹åºé¨åºç°ä¸æ¡å红è²èæ¯ç`DEBUG` åæ ·ï¼é£ä¹å°±è¯´æLunaixOSå·²å¤å¨è°è¯æ¨¡å¼ä¸ã + +注æï¼å¨è¿ä¸ªæ¶åï¼LunaixOSä¼å¼å§å¨`COM1`ä¸çå¬GDBå议信æ¯ï¼å¹¶ä¸æåä¸åçæ´»å¨ï¼å¦è°åº¦ï¼ä»¥å对å¤é¨ä¸æçä¸åååºï¼ãç¨æ·æ¤æ¶éè¦å°GDBä¸å ¶æè½½ï¼å¹¶ä½¿ç¨GDBç工使µæ¥æç¤ºå æ ¸ä¸ä¸æ¥çå¨ä½ã + +å¨ç®åï¼ä¸ºäºé²æ¢ä»£ç è¿äºèè¿ï¼LunaixOSå®ç°çæ¯GDBè¿ç¨åè®®è¦æ±çæå°æå¡ç«¯å½ä»¤åéï¼`g`, `G`, `p`, `P`, `Q`, `S`, `k`, `?`, `m`, `M`, `X`ã足以满足大é¨åçè°è¯éæ±ã + +å½ç»æè°è¯çæ¶åï¼è¯·ä½¿ç¨GDBç`kill`æä»¤è¿è¡è¿æ¥çæå¼ã注æï¼è¿ä¸ªæä»¤ä¼ä½¿å¾LunaixOSæ¢å¤æææåçæ´»å¨ï¼è¿å ¥æ£å¸¸çè¿è¡åºåï¼ä½å¹¶ä¸ä¼éåºè°è¯æ¨¡å¼ãGDBçæè½½è¯·æ±ä¾ç¶å¨LunaixOSä¸äº«ææé«ä¼å æã妿éè¦éåºè°è¯æ¨¡å¼ï¼éè¦å¾ä¸²å£åå ¥åè串ï¼`0x40` `0x79` `0x61` `0x79`ã + +### GDBè°è¯æ³¨æäºé¡¹ + +å¨è°è¯ä¸ï¼è¯·é¿å 使ç¨`info stack`ï¼`bt`æè 任使¶å **æ å±å¼ï¼Stack Unwindingï¼** æè **æ åæº¯ï¼Stack Backtracingï¼** çæä»¤ãå¦åï¼LunaixOS徿å¯è½ä¼åºç° **ä¸å¯é¢æçè¡ä¸º** ã \ No newline at end of file