發表文章

LLVM for Windows Visual Studio 2010/2012

圖片
Chandler Caruth 在 GoingNative 2013 上宣布了一個好消息,LLVM 3.4 (開發中)正在如火如荼地移植到 Windows 上,目前初步的成果已經可以使用 Visual Studio 2010/2012 作為 IDE 了,對於習慣 Visual Studio 的人來講應該是個好消息。A path forward for an LLVM toolchain on Windows: http://blog.llvm.org/2013/09/a-path-forward-for-llvm-toolchain-on.htmlLLVM Toolchain on Windows -- Chandler Carruth: http://isocpp.org/blog/2013/09/llvm-toolchain-on-windows-chandler-carruthThe Care and Feeding of C++’s Dragons: http://channel9.msdn.com/Events/GoingNative/2013/The-Care-and-Feeding-of-C-s-Dragonsalpha 版本可以在這邊下載到:SVN Snapshot: http://llvm.org/builds/設定上也非常簡單,在 Project > Properties > General > Platform Toolset 改成 LLVM-vs2010 即可。
試玩了一下發現:snapshot 是用 Visual Studio 2012 建置的,因此環境若是只有 Visual Studio 2010 , clang 會抱怨找不到 msvcp.dll 的錯誤訊息,解決方法除了安裝 2012 外,也可以選擇只安裝 "Visual C++ Redistributable for Visual Studio 2012 Update 3" http://www.microsoft.com/en-us/download/details.aspx?id=30679老問題,只能編譯 C ,對於 C++ 會有 ABI 上的問題(http://www.microsoft.com/en-us/download/d…

新 project 有感

C# + .NET framework 2.0 + Visual Studio 2010 + remote debugging = 殘廢C# + .NET framework 2.0 + dump + WinDbg = 悲劇

NetBSD Kernel 要支援 Lua

讓我想起了以前微軟研究院利用 C# 改良版 Spec# 開發的 Singularity OS ,不過這次換成了 Lua 。2010 年便開始開始的 GSoC project,一度變成沒人維護的項目,不過 NetBSD 7 可能即將包含它。還提到了 Python 和 Java 也是有可能的取代方案,不過考慮到這兩個語言的 object mapping 和 memory 需求量,還是沒有成真。目前看來外國鄉民是一面倒地不看好,不過技術嘛,或許會有令人驚豔的應用或影響出現也說不定!不過 script language 大都帶有 garbage collection ,要讓這大傢伙和 kernel 裡其他的 subsystem 互動順利、尤其是記憶體管理,加上處理 interpreter 內,自帶的 synchronization mechanism 搭配 kernel scheduler ,花的功夫應該是不少,令人好奇!News http://bsd.slashdot.org/story/13/02/16/2329259/netbsd-to-support-kernel-development-in-lua-scriptingSlides: https://fosdem.org/2013/schedule/event/lua_in_the_netbsd_kernel/attachments/slides/278/export/events/attachments/lua_in_the_netbsd_kernel/slides/278/kernel_mode_lua.pdf

BoostPro 要關門了?!

在 Boost mail list 上看到的消息:http://lists.boost.org/Archives/boost/2013/01/200634.phpSubject: [boost] Future of Boost Windows Installers
From: Dave Abrahams (dave_at_[hidden])
Date: 2013-01-31 14:42:33 Hi, As many of you already know, I'm going to work at Apple in late
February, and BoostPro is closing its doors. For many years, the Boost
Getting Started Guide has suggested that Windows users pop over to
BoostPro's website and use the latest installer to get Windows binaries.
We'd like to donate to the community the technology used to build those
installers. If anyone would like to pick up the job of creating them,
we'd be happy to offer guidance. Right now I'm on a plane where an uplink to GitHub is creeping along at
4KB/s, so I've been pushing the stuff up in bits and pieces and the
latest stuff isn't up there, but it's going to
http://github.com/boostpro/installer and will be complete within 24 hours. Whatever happ…

C++ Grandmaster Certification ( 一代宗師認證)

在 Ptt C_and_CPP 版看到網友的分享http://www.cppgm.org/index.html是個免費的線上課程,但結業時要求妳/你寫出一套 C++ compiler (x86_64)、standard library、toolchain ,並且要符合 C++11 標準,過程中不可以使用任何的 3rd party code 。Participants in this free online course will develop their own C++ compiler, standard library, and toolchain with the following features:Compliant with the latest 2011 standard (C++11) Written entirely in C++ with no third-party dependencies Code generator targeting Linux x86_64 Full toolchain including preprocessor, assembler, and linker Will build with itself (self-hosting) and pass provided conformance test suite 真是非常的硬!!!那過了,有什麼好處?目前網頁列出了三項:the title Certified C++ Grandmaster [CPPGM]CPPGM 認證過後的一代宗師!a letter of recommendation detailing their achievement CPPGM 會幫你寫一封介紹信!access to a course graduate exclusive professional networking group 一代宗師網路俱樂部!報名2013/2/15: 報名截止2013/3/1: 下一期開課有興趣的趕快衝啊~不過認真一下,網路上 google 不太到 CPPGM 的詳細資訊,網頁上的自我介紹也很簡單幾句:ABOUT CPPGM: The CPPGM Foundation was formed by a software company that recogn…

WinDbg Tips: Automatically Break into the Target Computer

圖片
適用時機進行非常早期的 kernel debugging ,希望在 kernel 完成初始化後,立即中斷。 追蹤 boot process 、kernel loader 、休眠啟動(resume from hibernation)。透過適當 BCDEdit 設定,也可用來 debug BootMgr, Winload.exe, WinResume.exe 等程式 說明在 WinDbg 裡頭又稱作:Change Post-Reboot Break State 。目前共有三種模式可供切換:No break除非使用者按下 CTRL+Break 手動觸發一個 break event ,否則不會中斷 target 的運作。預設模式。 Break on reboot當 target 上的 kernel 完成初始化後,立即中斷。 Break on first module load當 target 上的 kernel 完成第一個 module 的載入,立即中斷。 語法CTRL+ALT+K 範例應用透過 BCDEdit 開啟 boot manager 的 debug :bcdedit /set {bootmgr} bootdebug on接著,在 WinDbg 中設定 Break on reboot ,重開機後,我們就可以看到 WinDbg 停在 bootmgr 上了。感謝會有這篇文章,是因為上了張銀奎老師的課,張銀奎老師不用多做介紹,他是软件调试[2]的作者,也常在高端调试[3]出沒(應該也是該網站的建立者?!),三天的課程非常精實,把 Windows Internals 用 WinDbg 方式再講一次,受益匪淺 :)ReferenceCTRL+K (Change Post-Reboot Break State) (Windows Debuggers): http://msdn.microsoft.com/zh-tw/library/windows/hardware/ff540326%28v=vs.85%29.aspx软件调试:http://advdbg.org/books/swdbg/高端调试:http://advdbg.org/

Visual C++ Directories/Inherited Properties Changes

圖片
前言在 Visual C++ 裡頭,C++ Directories 定義了 Visual C++ 這個 IDE 要去哪些路徑下找尋 header files/library files/sources files ,在 2005/2008 裡頭,全域的設定可以在 Tools > Options > Projects and Solutions > VC++ Directories 下找到。圖一、VC++ 2005 下的 VC++ Directories Dialog這個 dialog 在 VC++ 2010 不復存在了,取而代之的是請使用者使用 property sheet 以及 per-project 的設定。如果好奇為什麼做了這樣的更動,可以參考 [2] 的文章,主要是因為:這樣全域的設定太過強大,當使用者有許多 projects 在同一台機器上 build 時,容易混淆出錯。因為這個全域的設定檔,是存放在 %LOCALAPPDATA%\Microsoft\VisualStudio\8.0\VCComponents.dat (8.0 為 VC++ 2005,9.0 則是 2008) 這個檔案裡頭,而不是跟著每個專案檔。因此當使用者使用 source control system 時,不會把設定跟著同步到 server 上,check-out 的人也因此無法正確建置專案了。VCComponents.dat 是給 VCBuild.exe 讀的 INI 檔,而 VC++ 2010 開始改用 MSBuild.exe 來作為統一的 build utility [3] ,因此竟然要改,就連同格式一起換掉吧。按編:這三個理由實在都很說不過去,不過既然這是 Visual C++ team 的決定,我們也只能接受了 :~UI 變動從 2010 之後,變動後的 VC++ Directories 不再放在 Tools > Options > Projects and Solutions > VC++ Directories ,而是以 per-project 方式存在,使用者可以:對 project 按右鍵,選擇 properties > Configuration Properties > VC++ Directories或是,從工…