成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

解析關(guān)于Lua調(diào)試器案例實(shí)現(xiàn)

移動(dòng)開發(fā) iOS
作為一個(gè)調(diào)試器,應(yīng)該支持一些最簡(jiǎn)單而又常用的功能,比如:?jiǎn)尾礁?、輸出調(diào)試信息、設(shè)置斷點(diǎn)等。要探索如何實(shí)現(xiàn)Lua調(diào)試器,還是帶著這些問題去找答案吧。

文章介紹了如何實(shí)現(xiàn)一個(gè)Lua調(diào)試器,實(shí)現(xiàn)Lua調(diào)試器的目的僅僅是寄希望借此熟悉Lua源代碼。所編寫的Lua調(diào)試器功能越強(qiáng),表明你對(duì)Lua源碼越了解。

先前用lua寫過一些應(yīng)用,感覺Lua是一個(gè)很小巧的語(yǔ)言,Lua源代碼無(wú)疑是研究語(yǔ)言相關(guān)的首選。“Lua雖小,五臟俱全”!為了研究Lua源代碼,就打算著手寫一個(gè)簡(jiǎn)單的Lua調(diào)試器,發(fā)現(xiàn)其中還是有些收獲的,特記錄如下。

作為一個(gè)調(diào)試器,應(yīng)該支持一些最簡(jiǎn)單而又常用的功能,比如:?jiǎn)尾礁櫋⑤敵稣{(diào)試信息、設(shè)置斷點(diǎn)等。要探索如何實(shí)現(xiàn)Lua調(diào)試器,還是帶著這些問題去找答案吧。本文使用的開發(fā)環(huán)境為:win7,lua 5.1.4源代碼。

Lua虛擬機(jī)是如何暫停的

Lua虛擬機(jī)和普通的CPU一樣,包含兩部分:數(shù)據(jù)存儲(chǔ)區(qū)和邏輯控制區(qū)。數(shù)據(jù)存儲(chǔ)區(qū)對(duì)應(yīng)著CPU的寄存器、狀態(tài)等,在Lua中實(shí)際上就是lua_State。邏輯控制區(qū)對(duì)應(yīng)著CPU的每條指令的具體實(shí)現(xiàn)。Lua虛擬機(jī)邏輯控制區(qū)的相關(guān)的源代碼位于lvm.c中。其中,執(zhí)行Lua指令的函數(shù)為luaV_execute。

為了方便調(diào)試,函數(shù)luaV_execute在執(zhí)行每條Lua指令之前,會(huì)去查找是否存在調(diào)試鉤子(hook):存在的話,去執(zhí)行鉤子。然后,判斷Lua虛擬機(jī)的狀態(tài)是否為暫停,若是的話就返回,而不執(zhí)行當(dāng)前Lua指令。若不存在調(diào)試鉤子,則正常執(zhí)行Lua指令。

  1. if ((L->hookmask & (LUA_MASKLINE | LUA_MASKCOUNT)) &&  
  2. (--L->hookcount == 0 || L->hookmask & LUA_MASKLINE)) {  
  3. traceexec(L, pc); // 內(nèi)部會(huì)執(zhí)行相應(yīng)的鉤子函數(shù)  
  4. if (L->status == LUA_YIELD) { // 鉤子函數(shù)是否將狀態(tài)轉(zhuǎn)為暫停?  
  5. L->savedpc = pc - 1;  
  6. return; // 此處離開函數(shù)luaV_execute,導(dǎo)致虛擬機(jī)暫停執(zhí)行  
  7. }  
  8. base = L->base;  

 小結(jié):解析關(guān)于Lua調(diào)試器案例實(shí)現(xiàn)的內(nèi)容介紹完了,希望通過本文的學(xué)習(xí)能對(duì)你有所幫助!

責(zé)任編輯:zhaolei 來(lái)源: 互聯(lián)網(wǎng)
相關(guān)推薦

2011-08-24 16:41:38

lua調(diào)試器

2011-08-31 16:39:06

Lua調(diào)試器

2011-08-24 11:08:09

Lua

2011-08-31 16:51:12

Lua調(diào)試器

2011-08-25 16:34:27

Lua調(diào)試器

2010-03-01 11:06:52

Python 調(diào)試器

2020-03-16 10:05:13

EmacsGUDLinux

2016-09-27 20:12:33

Android虛擬機(jī)Android動(dòng)態(tài)調(diào)試

2009-12-14 10:57:34

Ruby調(diào)試器

2023-02-28 11:39:55

CMake腳本項(xiàng)目

2009-06-23 11:05:05

Mircosoft C

2010-02-24 09:32:24

Python 調(diào)試器

2022-05-23 09:22:20

Go語(yǔ)言調(diào)試器Delve

2011-08-29 16:48:50

Lua配置文件C++

2011-08-29 16:37:21

Lua協(xié)同線程

2023-03-13 00:21:21

調(diào)試器斷點(diǎn)開發(fā)者

2022-07-22 12:45:39

GNU

2017-04-19 21:35:38

Linux調(diào)試器工作原理

2011-02-22 11:07:24

Python

2017-06-28 14:21:22

Linux調(diào)試器斷點(diǎn)
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)

主站蜘蛛池模板: japanhdxxxx裸体| 欧美精品欧美精品系列 | 精品在线一区 | 国产三级精品三级在线观看四季网 | 欧美精品一区二区三区在线四季 | 国产视频欧美 | 精品国产一区二区三区久久久蜜月 | 久久丁香 | 亚洲精品一区av在线播放 | 成人免费观看视频 | 欧美一级黄色片免费观看 | 午夜精品视频 | 欧美乱大交xxxxx另类电影 | 颜色网站在线观看 | 亚洲欧美国产精品久久 | 激情毛片 | www.色综合| 亚洲成人天堂 | 国产午夜精品久久久久免费视高清 | 亚洲欧美日韩精品久久亚洲区 | 国产一区二区成人 | 一区二区国产精品 | 99精品一区 | 欧美极品一区二区 | 久久久精品一区二区三区四季av | 久久国产麻豆 | 国产 日韩 欧美 中文 在线播放 | 亚洲一区二区三区四区在线观看 | jizz中国日本 | 欧美日韩高清在线一区 | 久久久999成人 | 秋霞a级毛片在线看 | 阿v视频在线观看 | 在线一级片 | 国产高清在线精品一区二区三区 | 中文字幕视频在线观看 | 日韩有码一区 | 国产免费视频在线 | 成av在线| 亚洲欧美日韩精品久久亚洲区 | 日韩第1页 |