• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            戰魂小筑

            討論群:309800774 知乎關注:http://zhihu.com/people/sunicdavy 開源項目:https://github.com/davyxu

               :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
              257 隨筆 :: 0 文章 :: 506 評論 :: 0 Trackbacks

            等了大半年,松鼠腳本終于釋出了3.0穩定版本

            松鼠腳本可以說是Lua的超級增強版,作者在Crysis項目使用Lua多年,深知Lua的優缺點.之后自己編寫了松鼠腳本來解決諸如class,attribute,delegation,更強大的thread,exception等等功能.

            松鼠腳本本身對Windows開發人員極為照顧,第三方庫可謂豐富,遠程調試,代碼加色及語法檢查都可以直接在VS2008的IDE中進行.

            簡單的遠程調試功能需要以下步驟:

            1. 下載松鼠腳本3.0版本

            2. 在松鼠腳本Wiki中下載SQDBG遠程調試庫

            3. 將sqdbg工程放到SQUIRREL3之下,打開SQUIRREL3\squirrel.sln,將sqdbg添加到工程,編譯所有

            4. 在這個Solution下,創建一個Squirrel松鼠工程

            image

            5. 在新創建的松鼠工程屬性中如下圖設置

            image 

            Interpreter其實就是啟動調試器(不是sq.exe)

            WorkingDirectory 就是main.nut所在的目錄(官網的路徑設置有點誤導)

            Command Line Options 就是傳入sqdbg.exe的命令行參數

            修改下main.nut文件,例如:

            for(local i = 1;i<10;i++)
            {
                print( i );
            }

            在print語句前打上斷點,調試松鼠工程,即可看到調試結果

            image

             

            有關于SQDBG多文件調試:

            SQDBG默認只能調試1個文件,顯然是個玩具,不能應對游戲和其他領域的多文件調試. 分析了下SQDBG的代碼

               1:  int main(int argc, char *argv[])
               2:  {
               3:      if(argc < 2){
               4:          scprintf(_SC("SQDBG error : no file specified"));
               5:          return -1;
               6:      }
               7:          
               8:      HSQUIRRELVM v = sq_open(1024);
               9:      sqstd_seterrorhandlers(v);
              10:   
              11:      //!! INITIALIZES THE DEBUGGER ON THE TCP PORT 1234
              12:      //!! ENABLES AUTOUPDATE
              13:      HSQREMOTEDBG rdbg = sq_rdbg_init(v,1234,SQTrue);
              14:      if(rdbg) {
              15:   
              16:          //!! ENABLES DEBUG INFO GENERATION(for the compiler)
              17:          sq_enabledebuginfo(v,SQTrue);
              18:   
              19:          sq_setprintfunc(v,printfunc,errorfunc);
              20:   
              21:          //!! SUSPENDS THE APP UNTIL THE DEBUGGER CLIENT CONNECTS
              22:          if(SQ_SUCCEEDED(sq_rdbg_waitforconnections(rdbg))) {
              23:              scprintf(_SC("connected\n"));
              24:   
              25:              const SQChar *fname=NULL;
              26:  #ifdef _UNICODE
              27:              SQChar sTemp[256];
              28:              mbstowcs(sTemp,argv[1],(int)strlen(argv[1])+1);
              29:              fname=sTemp;
              30:  #else
              31:              fname=argv[1];
              32:  #endif 
              33:              //!!REGISTERS STANDARDS LIBS
              34:              sq_pushroottable(v);
              35:              sqstd_register_bloblib(v);
              36:              sqstd_register_iolib(v);
              37:              //!!EXECUTE A SCTIPT
              38:              if(SQ_FAILED(sqstd_dofile(v,fname,SQFalse,SQTrue))) {
              39:                  PrintError(v);
              40:                  _getch();
              41:              }
              42:          }
              43:          //!! CLEANUP
              44:          sq_rdbg_shutdown(rdbg);
              45:      }
              46:      else {
              47:          PrintError(v);
              48:      }
              49:      sq_close(v);

            發現寫這個庫的老外還是很認真的,使用了sq_rdbg作為debugger的api前綴,意味著這個庫代碼是可以復用的.

            注意第38行:

            sqstd_dofile(v,fname,SQFalse,SQTrue)

            這就是SQDBG只能debug 1個文件的原因.

            如果需要在項目中做遠程調試,只需要將這句代碼換為工程中加載所有腳本的代碼和注冊系統API代碼即可

             

            當然,最簡單的方法,直接在代碼頂端添加dofile引用另外的代碼即可

            posted on 2011-05-14 17:42 戰魂小筑 閱讀(5310) 評論(5)  編輯 收藏 引用 所屬分類: 腳本技術C++/ 編程語言

            評論

            # re: 小試Squirrel松鼠腳本的遠程調試功能 2011-05-14 17:49 戰魂小筑
            補充下, 還需要下載VS2008的IDE
            http://forum.squirrel-lang.org/default.aspx?g=posts&t=1934  回復  更多評論
              

            # re: 小試Squirrel松鼠腳本的遠程調試功能 2011-05-19 00:26 xoyojank
            這東西性能比不上lua啊, 更不用說luajit了  回復  更多評論
              

            # re: 小試Squirrel松鼠腳本的遠程調試功能 2011-05-20 23:27 戰魂小筑
            @xoyojank
            這東西本來就是一個深度lua使用者的作品,看過一些評測,反而比lua快.
            lua沒有OO, 松鼠可以支持OO, 開發效率其實更重要  回復  更多評論
              

            # re: 小試Squirrel松鼠腳本的遠程調試功能 2011-07-23 19:43 opengl32
            4. 在這個Solution下,創建一個Squirrel松鼠工程


            我沒有找到sq的工程. 請問博主是不是漏了什么步驟?  回復  更多評論
              

            # re: 小試Squirrel松鼠腳本的遠程調試功能 2013-09-04 12:41 775202440@qq.com
            sqdbg調用的對象已與客戶端斷開連接 這是什么問題呢? 我設置以后總是出現這個問題。  回復  更多評論
              

            亚洲欧美精品一区久久中文字幕| 蜜桃麻豆www久久| 免费久久人人爽人人爽av| 国产69精品久久久久APP下载| 亚洲中文字幕久久精品无码喷水 | 久久久国产精品亚洲一区| 久久99国产精品久久99果冻传媒| 久久综合狠狠综合久久97色| 亚洲精品乱码久久久久久中文字幕| 久久久久综合网久久| 亚洲精品tv久久久久久久久| 精品熟女少妇aⅴ免费久久| 亚洲精品无码成人片久久| 久久亚洲精品无码播放| 91精品国产乱码久久久久久 | 精品无码久久久久国产| 久久夜色精品国产亚洲av| 精品综合久久久久久97超人| 国产A三级久久精品| 污污内射久久一区二区欧美日韩 | 午夜视频久久久久一区| 久久久久国产精品| 精品少妇人妻av无码久久| 久久伊人五月丁香狠狠色| 久久婷婷是五月综合色狠狠| 久久国产综合精品五月天| 狠狠干狠狠久久| 久久99热国产这有精品| 久久久av波多野一区二区| 色偷偷偷久久伊人大杳蕉| 99久久这里只精品国产免费| 伊人久久大香线蕉无码麻豆| 精品乱码久久久久久夜夜嗨| 久久精品国产精品亜洲毛片| 久久―日本道色综合久久| 7国产欧美日韩综合天堂中文久久久久| 久久精品国产99久久无毒不卡 | 亚洲狠狠婷婷综合久久蜜芽| 亚洲国产精品久久电影欧美| 久久综合九色综合网站| 精品国产乱码久久久久久郑州公司|