免费国产精品自在自线-91精品国产色综合久久久浪潮-99热久久免费频精品-国产精品国模在线观看-久久亚洲国产精品成人?V秋霞-久久国产一级A片免费播放-亚洲国产欧洲综合97久久-久久国产白嫩美女呻吟高潮

ARTICLE DETAIL

資訊詳情

深耕商務(wù)建站與企業(yè)官網(wǎng)運(yùn)營(yíng)的一線實(shí)戰(zhàn)洞察。

M1芯片Mac C++調(diào)試環(huán)境搭建:VS Code+LLDB從入門到排坑

M1芯片Mac C++調(diào)試環(huán)境搭建:VS Code+LLDB從入門到排坑 我一直覺得在M1芯片的Mac上配好一套順手的C調(diào)試環(huán)境比在普通機(jī)器上多踩的那幾個(gè)坑恰恰是理解整個(gè)編譯調(diào)試鏈路最好的機(jī)會(huì)。網(wǎng)上教程很多但大多是Intel Mac時(shí)期的存量經(jīng)驗(yàn)照搬到Apple Silicon上經(jīng)常會(huì)遇見莫名其妙的問題明明編譯過(guò)了斷點(diǎn)卻不命中明明裝好了調(diào)試器啟動(dòng)時(shí)卻提示架構(gòu)不匹配。這篇文章把我自己從零配通、日常開發(fā)的完整過(guò)程拆開來(lái)講包括每一步背后的原理和取舍希望幫你少走彎路。我默認(rèn)你已經(jīng)裝好了VS Code和Homebrew至少對(duì)終端操作不陌生。如果你連Homebrew都沒裝可以先花十分鐘裝一下后面步驟會(huì)順暢很多。1. 為什么M1芯片會(huì)讓老教程集體翻車先搞清楚你面對(duì)的工具鏈很多人拿到M1芯片的MacBook第一件事就是搜索vscode配置C然后照著2019年甚至更早的文章一步步操作最后卡在各種古怪的報(bào)錯(cuò)里。這不完全是操作問題而是硬件架構(gòu)變了底層邏輯也跟著變了。1.1 從x86_64到arm64這不是換了個(gè)CPU那么簡(jiǎn)單M1芯片是Apple Silicon指令集基于ARM架構(gòu)。過(guò)去幾年幾乎所有Mac端的C教程默認(rèn)你用的是Intel x86_64架構(gòu)。這意味著網(wǎng)上能搜到的預(yù)編譯二進(jìn)制、SDK路徑、甚至是VS Code插件里一些原生模塊很多都只適配了x86_64。當(dāng)你在這臺(tái)機(jī)器上執(zhí)行一個(gè)沒有針對(duì)arm64優(yōu)化過(guò)的程序時(shí)系統(tǒng)會(huì)通過(guò)Rosetta 2進(jìn)行二進(jìn)制翻譯。這是一個(gè)透明但并非無(wú)代價(jià)的過(guò)程首次運(yùn)行會(huì)有額外的翻譯開銷某些依賴了底層硬件的調(diào)試功能也可能表現(xiàn)異常。更麻煩的是如果你同時(shí)裝了x86_64和arm64兩套工具鏈CMake或者編譯腳本一旦探測(cè)錯(cuò)了架構(gòu)整條構(gòu)建鏈就會(huì)亂套。我在第一次配置時(shí)直接用g命令編譯報(bào)錯(cuò)信息指向一個(gè)完全沒有印象的路徑。后來(lái)發(fā)現(xiàn)很多教程里讓裝的編譯器本身就是通過(guò)Rosetta裝在Intel目錄下的。1.2 編譯器、調(diào)試器和VS Code插件三層都要匹配一個(gè)可用的調(diào)試環(huán)境至少由三層組成編譯器負(fù)責(zé)把代碼變成機(jī)器碼調(diào)試器負(fù)責(zé)附加上去并讀取運(yùn)行信息VS Code插件負(fù)責(zé)把這兩者串起來(lái)。編譯器層Apple Clang、Homebrew Clang、或者你自己編譯的GCC各自的安裝路徑和默認(rèn)架構(gòu)可能完全不同。Apple Clang隨系統(tǒng)自帶路徑穩(wěn)定用來(lái)入門最省心。調(diào)試器層在macOS上LLDB是首要調(diào)試器。很多網(wǎng)上教程會(huì)讓你裝GDB但我強(qiáng)烈不建議在M1上折騰GDB兼容性和權(quán)限問題會(huì)讓你欲哭無(wú)淚。系統(tǒng)自帶的LLDB版本和CodeLLDB插件配合得很好。插件層C/C插件就是微軟官方的那個(gè)C/C extension負(fù)責(zé)解析IntelliSense而調(diào)試部分可以交給CodeLLDB插件。這兩個(gè)插件在Apple Silicon上都有原生arm64版本效率比轉(zhuǎn)譯版本高不少。理解了這個(gè)三層結(jié)構(gòu)你再看配置時(shí)看到的launch.json、tasks.json就會(huì)明白每個(gè)字段到底在跟哪一層對(duì)話排查問題也會(huì)更有方向。搞清楚了這一點(diǎn)我們直接進(jìn)入實(shí)操。我推薦一步步來(lái)而不是直接拷貝別人的完整配置因?yàn)槊恳徊蕉贾档媚阌H眼看到輸出結(jié)果。2. 編譯器選型與安裝用Apple Clang還是Homebrew Clang在M1 Mac上你至少有兩個(gè)主流選擇系統(tǒng)自帶的Apple Clang和通過(guò)Homebrew安裝的LLVM Clang。我不太建議在這個(gè)階段自己編譯GCC時(shí)間成本高收益卻不明顯。2.1 Apple Clang零成本、路徑穩(wěn)定、夠用Apple Clang隨Xcode Command Line Tools一起安裝是絕大多數(shù)情況下的默認(rèn)選項(xiàng)。打開終端輸入xcode-select --install如果系統(tǒng)提示已安裝就可以直接用clang --version確認(rèn)。Apple Clang自帶了對(duì)Apple Silicon的原生支持編譯出的可執(zhí)行文件默認(rèn)就是arm64架構(gòu)調(diào)試時(shí)能完全發(fā)揮芯片性能。它的好處是省心路徑穩(wěn)定、更新隨系統(tǒng)、對(duì)macOS SDK的支持最好。缺點(diǎn)在于版本更新節(jié)奏跟隨系統(tǒng)如果你想用最新的C標(biāo)準(zhǔn)特性或者要用到OpenMP這類并行庫(kù)Apple Clang會(huì)顯得貧瘠——它不自帶libomp需要額外折騰。2.2 Homebrew的LLVM Clang工具鏈者的選擇如果你要寫的是計(jì)算密集型項(xiàng)目或者重度依賴較新的C標(biāo)準(zhǔn)我建議你裝Homebrew的LLVMbrew install llvm裝完后它的可執(zhí)行文件在/opt/homebrew/opt/llvm/bin/clang。注意Homebrew在Apple Silicon上的根目錄是/opt/homebrew不是/usr/local。這個(gè)差異極其關(guān)鍵網(wǎng)上大量過(guò)時(shí)教程讓你在/usr/local里找路徑在M1上根本找不到。選Homebrew LLVM的另一個(gè)原因是它附帶了完整的LLVM工具鏈llvm-gdb、clang-tidy、lldb等一應(yīng)俱全配合CodeLLDB插件做靜態(tài)分析和調(diào)試體驗(yàn)都更順滑。代價(jià)是路徑需要自己配置環(huán)境變量得手動(dòng)維護(hù)。我個(gè)人的建議是如果你只是做課程作業(yè)、刷算法題、寫小工具直接用Apple Clang如果你準(zhǔn)備認(rèn)真搞工程或者涉及OpenMP、CUDA雖然M1沒有、新標(biāo)準(zhǔn)特性安裝Homebrew LLVM是值得的。下面的配置以Apple Clang為主因?yàn)閷?duì)大多數(shù)讀者來(lái)說(shuō)這是最簡(jiǎn)路徑但我會(huì)在文末補(bǔ)充CMake工具鏈切換方法方便你隨時(shí)換。2.3 確認(rèn)架構(gòu)防止慣性的Intel路徑思維裝完編譯器后驗(yàn)證一下默認(rèn)架構(gòu)是很有必要的file $(which clang)clang大概率是指向/usr/bin/clang的符號(hào)鏈接你可以直接編譯一個(gè)測(cè)試文件看產(chǎn)物架構(gòu)echo int main(){return 0;} test.cpp clang test.cpp -o test file test輸出里會(huì)明確寫著arm64。如果這里顯示了x86_64說(shuō)明你的編譯器本身是Intel版本運(yùn)行在Rosetta之下。雖然它也能工作但我建議換成原生arm64版本避免后續(xù)調(diào)試時(shí)出現(xiàn)莫名奇妙的符號(hào)解析問題。3. 最小可運(yùn)行配置從tasks.json到launch.json的完整鏈路網(wǎng)上多數(shù)教程會(huì)讓你自己分層配置先寫tasks.json定義編譯任務(wù)再寫launch.json定義調(diào)試啟動(dòng)方式。這一步確實(shí)繞不開但我希望幫你把邏輯捋順而不是機(jī)械地抄參數(shù)。3.1 VS Code插件安裝不要貪多打開VS Code擴(kuò)展面板搜索C/C安裝微軟官方cpptools插件。如果你要用LLDB調(diào)試macOS下的默認(rèn)選擇我強(qiáng)烈建議再裝一個(gè)CodeLLDB插件。這兩個(gè)插件在Apple Silicon上都有原生arm64版本使用體驗(yàn)遠(yuǎn)好于通過(guò)Rosetta轉(zhuǎn)譯的版本。裝完后在命令面板CommandShiftP里輸入C/C: Select IntelliSense Configuration選擇macOS (Apple Clang)或macOS (clang/arm64)。這一步能讓代碼補(bǔ)全和錯(cuò)誤檢查準(zhǔn)確識(shí)別你的編譯器。3.2 tasks.json先編譯出能跑的東西在項(xiàng)目根目錄建一個(gè).vscode文件夾在里面新建tasks.json。這個(gè)文件的作用是定義構(gòu)建任務(wù)——你按CommandShiftBVS Code就會(huì)執(zhí)行這里面的命令。對(duì)于單文件調(diào)試一個(gè)最簡(jiǎn)單的tasks.json長(zhǎng)這樣{ version: 2.0.0, tasks: [ { label: build single file, type: shell, command: clang, args: [ -g, ${file}, -o, ${fileDirname}/${fileBasenameNoExtension}.out ], group: { kind: build, isDefault: true }, problemMatcher: { owner: cpp, fileLocation: [relative, ${workspaceFolder}], pattern: { regexp: ^(.*):(\\d):(\\d):\\s(warning|error):\\s(.*)$, file: 1, line: 2, column: 3, severity: 4, message: 5 } } } ] }這里重點(diǎn)解釋幾個(gè)容易被忽略的字段-g生成調(diào)試符號(hào)。沒有這個(gè)參數(shù)VS Code即使attach上了進(jìn)程也看不到變量值斷點(diǎn)也會(huì)顯示為未驗(yàn)證地址。說(shuō)到斷點(diǎn)如果你想深入了解斷點(diǎn)命中的底層原理可以看看LLDB的日志輸出命令是log enable lldb breakpoint這會(huì)輸出斷點(diǎn)管理的一手信息對(duì)理解為什么斷點(diǎn)不生效很有幫助。${file}和${fileDirname}/${fileBasenameNoExtension}.outVS Code內(nèi)置變量分別代表當(dāng)前打開的文件路徑和同目錄下同名.out文件。這種寫法能讓你從任何目錄構(gòu)建當(dāng)前文件。problemMatcher這是把編譯器輸出解析成問題面板條目的正則。如果你不寫編譯報(bào)錯(cuò)時(shí)只能在終端里滾動(dòng)翻找很不方便。3.3 launch.json調(diào)試會(huì)話怎么啟動(dòng)、怎么附加接下來(lái)在.vscode文件夾里新建launch.json。這里才是調(diào)試的主控室{ version: 0.2.0, configurations: [ { type: lldb, request: launch, name: Debug C, program: ${fileDirname}/${fileBasenameNoExtension}.out, args: [], cwd: ${workspaceFolder}, preLaunchTask: build single file, terminal: console } ] }注意type字段是lldb這是CodeLLDB插件提供的調(diào)試器類型。如果你用的是微軟C/C插件也可以寫type: cppdbg并且設(shè)置MIMode: lldb但實(shí)測(cè)中CodeLLDB對(duì)LLDB特性的支持更完整環(huán)境變量映射也更符合直覺。preLaunchTask字段讓調(diào)試啟動(dòng)前自動(dòng)執(zhí)行剛才的編譯任務(wù)這樣你每次按F5都是先編譯再調(diào)試不用手動(dòng)切到終端敲命令。3.4 驗(yàn)證鏈路從編譯到斷點(diǎn)命中配置好后打開任意一個(gè)包含main函數(shù)的.cpp文件按F5。如果一切正常你會(huì)看到底部終端彈出編譯輸出隨后程序運(yùn)行到入口點(diǎn)并暫停。這里我想單獨(dú)說(shuō)明terminal字段。在macOS下VS Code的默認(rèn)外置終端是Terminal.app但CodeLLDB插件支持把調(diào)試進(jìn)程放在VS Code內(nèi)置的集成終端里。terminal設(shè)為console時(shí)stdout會(huì)直接顯示在調(diào)試控制臺(tái)里配合console調(diào)試更順滑。如果你跑的是需要手動(dòng)輸入的程序需要把它改成terminal或者在args里預(yù)先指定輸入方式。有時(shí)候你把斷點(diǎn)打在變量賦值那一行按F5發(fā)現(xiàn)直接一路執(zhí)行到底斷點(diǎn)變成了灰色空心圓。這通常意味著調(diào)試符號(hào)沒有傳到LLDB或者編譯優(yōu)化把代碼內(nèi)聯(lián)了。處理方式很簡(jiǎn)單確認(rèn)編譯命令里帶了-g并且在沒有-O2以上的優(yōu)化標(biāo)志下重試。4. CMake工程場(chǎng)景別再依賴單文件編譯了當(dāng)你開始寫多個(gè)源文件、依賴第三方庫(kù)的時(shí)候單文件編譯的tasks.json就不太夠用了。哪怕VS Code能通過(guò)args把多個(gè)文件塞給編譯器那也只是拼湊而不是工程化管理。這一節(jié)給你一套基于CMake的做法在M1 Mac上非常穩(wěn)定。4.1 CMake與生成器的選擇Unix Makefiles還是NinjaHomebrew裝CMake很簡(jiǎn)單brew install cmake裝完后在項(xiàng)目根目錄建一個(gè)CMakeLists.txt。對(duì)于Apple Silicon生成器我推薦用Ninja。Ninja比起Unix Makefiles的并行能力更強(qiáng)增量構(gòu)建更快而且在VS Code里集成得也很自然brew install ninja4.2 最小可用CMakeLists.txt參考下面這個(gè)文件可以直接扔到你的項(xiàng)目里當(dāng)作起點(diǎn)cmake_minimum_required(VERSION 3.20) project(DemoProject LANGUAGES CXX) set(CMAKE_CXX_STANDARD 17) set(CMAKE_CXX_STANDARD_REQUIRED ON) add_executable(main main.cpp)如果你要用OpenMP不要忘了Apple Clang不自帶libomp需要另外處理。簡(jiǎn)單說(shuō)通過(guò)Homebrew裝libomp然后在CMake里手動(dòng)找到它。Apple Clang的-fopenmp并不像Linux GCC那樣自帶實(shí)現(xiàn)這一塊容易踩坑我在后文會(huì)專門提。4.3 VS Code里跑CMake用官方的CMake Tools插件微軟有個(gè)官方CMake Tools插件可以和tasks.json體系無(wú)縫銜接。裝好后CommandShiftP輸入CMake: Select a Kit選擇Apple Clang或者Homebrew Clang——這一步其實(shí)是告訴CMake用哪個(gè)編譯器。如果Kit列表里一片空白檢查一下插件設(shè)置里的cmake.scanForKits是否開啟或者手動(dòng)指定{ cmake.kits: [ { name: Apple Clang arm64, compilers: { C: /usr/bin/clang, CXX: /usr/bin/clang } } ] }之后按F7觸發(fā)構(gòu)建F5調(diào)試時(shí)調(diào)試會(huì)話會(huì)直接命中CMake構(gòu)建出來(lái)的可執(zhí)行文件。對(duì)比單文件tasks.json這種方式生成的可執(zhí)行文件路徑由CMake管理你不需要自己去匹配路徑變量。5. M1 Mac上調(diào)試C環(huán)境常見的坑與排查鏈路配置過(guò)程我走了不少?gòu)澛愤@里把踩過(guò)的坑整理成排查鏈路每個(gè)條目都對(duì)應(yīng)具體的報(bào)錯(cuò)現(xiàn)象和解決思路幫你快速定位。5.1 構(gòu)建成功但斷點(diǎn)不生效先從可達(dá)性查起斷點(diǎn)不生效是個(gè)高頻問題但原因可能很多。我的排查順序是確認(rèn)可執(zhí)行文件里包含調(diào)試符號(hào)終端執(zhí)行nm -g yourBinary如果輸出的符號(hào)列表里有_main這類函數(shù)符號(hào)說(shuō)明調(diào)試符號(hào)在如果輸出顯示stripped那就是編譯階段沒加-g。確認(rèn)VS Code當(dāng)前調(diào)試會(huì)話的program路徑和實(shí)際的二進(jìn)制路徑是否一致。如果打過(guò)不可執(zhí)行權(quán)限LLDB會(huì)靜默失敗。檢查是否有多個(gè)同名.cpp文件VS Code的斷點(diǎn)是基于源文件路徑的解決方案文件夾如果和實(shí)際路徑不一致斷點(diǎn)就會(huì)顯示為灰色。這時(shí)候需要檢查launch.json里的sourceFileMap字段把路徑映射到真實(shí)路徑。如果你遇到斷點(diǎn)完全不可用的場(chǎng)景直接在終端里用LLDB手動(dòng)啟動(dòng)程序執(zhí)行breakpoint set --file main.cpp --line 5然后run如果LLDB自己能命中說(shuō)明lldb-server或插件側(cè)的映射出了問題連LLDB都命中不了那問題大概率出在編譯命令上。這個(gè)問題我重點(diǎn)講是因?yàn)榫W(wǎng)上很多帖子讓你重裝插件或者關(guān)掉各種優(yōu)化其實(shí)都不如直接用LLDB驗(yàn)證來(lái)得快。實(shí)踐里一個(gè)干凈的-g編譯加上明確的路徑映射能解決九成斷點(diǎn)問題。5.2 Unable to find LLDB或版本不匹配CodeLLDB插件和系統(tǒng)LLDB的版本兼容性CodeLLDB插件自帶了一個(gè)LLDB但它依賴系統(tǒng)上某些動(dòng)態(tài)庫(kù)。每次macOS系統(tǒng)升級(jí)后插件偶爾會(huì)報(bào)找不到liblldb的錯(cuò)誤。這時(shí)候最簡(jiǎn)單的做法是brew install llbd不沒有這個(gè)包名。正確做法是讓CodeLLDB使用系統(tǒng)自帶的LLDB路徑在launch.json里增加lldb: { executable: /usr/bin/lldb }如果還是不行進(jìn)VS Code插件市場(chǎng)把CodeLLDB升級(jí)到最新版并且檢查lldb.library設(shè)置是否指到了正確的liblldb.dylib路徑。從實(shí)戰(zhàn)經(jīng)驗(yàn)看VS Code和插件兩邊盡量保持最新能避免90%的兼容性問題。5.3 Rosetta轉(zhuǎn)譯串臺(tái)IntelliSense和調(diào)試器架構(gòu)不一致這是Apple Silicon獨(dú)有的坑你可能在Homebrew默認(rèn)路徑/opt/homebrew里裝了arm64的編譯器但某個(gè)依賴庫(kù)或者工具鏈配置腳本里硬編碼了/usr/local的Intel路徑導(dǎo)致CMake探測(cè)到了矛盾的架構(gòu)。排查方式很直接在CMakeLists.txt里臨時(shí)打印CMAKE_SYSTEM_PROCESSOR和CMAKE_CXX_COMPILER確認(rèn)編譯器是arm64并且系統(tǒng)處理器顯示arm64。如果顯示x86_64那就是工具鏈配置腳本里強(qiáng)制指定了Intel需要追溯是哪個(gè)第三方庫(kù)帶偏的。日常使用中你會(huì)遇到一種情況需要同時(shí)保留Intel和arm64兩套環(huán)境比如某些二進(jìn)制依賴只提供x86_64版本。這時(shí)候建議在VS Code的settings.json里給每個(gè)工作區(qū)分開指定路徑不要全局配置一個(gè)編譯器路徑。5.4 運(yùn)行OpenMP程序閃退Apple Clang的libomp缺失很多人在M1 Mac上寫上OpenMP代碼編譯能通過(guò)但一運(yùn)行就崩潰。原因在于Apple Clang本身不帶OpenMP運(yùn)行時(shí)。我建議通過(guò)Homebrew安裝brew install libomp然后在編譯命令里顯式指定clang -Xpreprocessor -fopenmp -I/opt/homebrew/opt/libomp/include -L/opt/homebrew/opt/libomp/lib -lomp main.cpp如果你用CMake可以這樣引入find_package(OpenMP REQUIRED) if(OpenMP_CXX_FLAGS) set(CMAKE_CXX_FLAGS ${CMAKE_CXX_FLAGS} ${OpenMP_CXX_FLAGS}) endif() if(OpenMP_CXX_LIB_NAMES) set(CMAKE_LINKER_FLAGS ${CMAKE_LINKER_FLAGS} ${OpenMP_CXX_LIB_NAMES}) endif()這一塊很容易被IDEA類工具自動(dòng)處理但你要是手寫編譯命令必須留意-lomp是否被正確鏈接。6. 讓調(diào)試體驗(yàn)更順手從環(huán)境變量到高級(jí)調(diào)試技巧當(dāng)基礎(chǔ)鏈路通了之后剩下的就是優(yōu)化體驗(yàn)。這里分享幾個(gè)我日常高頻使用的小技巧它們不會(huì)改變功能但能顯著提升效率。6.1 配置環(huán)境變量而不污染全局很多項(xiàng)目需要一個(gè)特定的環(huán)境變量才能跑起來(lái)但你又不想在~/.zshrc里寫死。VS Code里可以通過(guò)launch.json的env字段來(lái)注入env: { LD_LIBRARY_PATH: /opt/homebrew/lib, MY_CUSTOM_FLAG: 1 }注意macOS里沒有LD_LIBRARY_PATH運(yùn)行時(shí)動(dòng)態(tài)庫(kù)搜索路徑是DYLD_LIBRARY_PATH但這個(gè)變量在調(diào)試會(huì)話里經(jīng)常受到System Integrity ProtectionSIP的限制。通常更可靠的方式是把動(dòng)態(tài)庫(kù)路徑硬編碼到二進(jìn)制里用install_name_tool或者編譯時(shí)指定-rpath。比如clang -g main.cpp -L/opt/homebrew/opt/libomp/lib -lomp -Wl,-rpath,/opt/homebrew/opt/libomp/lib -o main這樣做的好處是你雙擊運(yùn)行或者調(diào)試時(shí)都不用擔(dān)心環(huán)境變量缺失。6.2 條件斷點(diǎn)、日志斷點(diǎn)與數(shù)據(jù)斷點(diǎn)除了基礎(chǔ)的斷點(diǎn)LLDB和CodeLLDB還支持幾個(gè)高級(jí)斷點(diǎn)類型條件斷點(diǎn)在斷點(diǎn)列表里右鍵設(shè)置條件表達(dá)式比如x 5。只有條件滿足時(shí)程序才會(huì)暫停。這對(duì)循環(huán)里定位特定迭代很有用。日志斷點(diǎn)打印日志但不中斷執(zhí)行。適合觀察變量變化比如在循環(huán)里x每次變化就打一條日志避免了手動(dòng)printf然后刪除的繁瑣。數(shù)據(jù)斷點(diǎn)監(jiān)控一塊內(nèi)存地址當(dāng)它被寫入或者修改時(shí)觸發(fā)暫停。這在排查野指針和內(nèi)存越界時(shí)非常有效。CodeLLDB里可以先在調(diào)試時(shí)觀察某個(gè)表達(dá)式然后右鍵Add Watchpoint。這些技巧最直接的收益是當(dāng)你面對(duì)一個(gè)狀態(tài)異常的程序時(shí)不需要在無(wú)數(shù)個(gè)點(diǎn)和日志里來(lái)回切直接讓工具替你篩掉無(wú)關(guān)信息。6.3 結(jié)合單元測(cè)試跑快速驗(yàn)證工程規(guī)模一大頻繁用F5啟動(dòng)整個(gè)程序來(lái)調(diào)試新功能并不現(xiàn)實(shí)。更合理的做法是讓項(xiàng)目里的單元測(cè)試作為調(diào)試入口。如果你的項(xiàng)目用了Google Test或Catch2你可以在tasks.json里加一個(gè)單獨(dú)的任務(wù)只構(gòu)建測(cè)試目標(biāo)然后在launch.json里新配置一個(gè)Debug Unit Tests會(huì)話program指向測(cè)試二進(jìn)制。配好之后遇到新代碼邏輯問題直接F5跑相關(guān)測(cè)試用例比每次都啟動(dòng)完整程序要快一個(gè)數(shù)量級(jí)。7. 實(shí)例演示一個(gè)帶命令行參數(shù)的簡(jiǎn)單項(xiàng)目從編碼到調(diào)試全流程講了這么多配置我直接用一個(gè)小例子把完整流程串起來(lái)方便你邊看邊操作。假設(shè)我現(xiàn)在想寫一個(gè)計(jì)算斐波那契數(shù)列的程序并且希望通過(guò)命令行傳入項(xiàng)數(shù)。項(xiàng)目結(jié)構(gòu)fibonacci/ ├── .vscode/ │ ├── launch.json │ └── tasks.json ├── CMakeLists.txt └── main.cppmain.cpp#include iostream #include cstdlib int fib(int n) { if (n 1) return n; return fib(n-1) fib(n-2); } int main(int argc, char** argv) { if (argc 2) { std::cout Usage: fib number std::endl; return 1; } int n std::atoi(argv[1]); std::cout fib( n ) fib(n) std::endl; return 0; }如果你走單文件編譯路線tasks.json保持之前的寫法即可。如果你用CMakeCMakeLists.txt用上面的模板就可以。調(diào)試時(shí)在launch.json里增加{ type: lldb, request: launch, name: Debug fib, program: ${workspaceFolder}/build/main, args: [10], cwd: ${workspaceFolder}, preLaunchTask: build cmake }這里要注意program指向的是CMake構(gòu)建目錄build里的產(chǎn)物。按F5之后窗口左下角調(diào)試控制臺(tái)會(huì)出現(xiàn)程序輸出和退出碼最后你在fib函數(shù)內(nèi)部打上斷點(diǎn)就能看到遞歸調(diào)用的每一步參數(shù)和局部變量。如果你直接在這個(gè)例子里遇到斷點(diǎn)在遞歸深處不命中的困惑回到第5章的排查鏈路大概率是優(yōu)化等級(jí)開高了。8. 收尾之前給新接觸M1 Mac調(diào)試C環(huán)境的你幾條心法配置C調(diào)試環(huán)境這件事本質(zhì)上是在協(xié)調(diào)編譯器、調(diào)試器、插件和工程結(jié)構(gòu)之間的關(guān)系。M1芯片的出現(xiàn)把這個(gè)協(xié)調(diào)過(guò)程要求的前提從以為只有一個(gè)CPU架構(gòu)升級(jí)到必須理解架構(gòu)差異。所以我不建議你指望一份萬(wàn)能配置一勞永逸而是建議你理解幾個(gè)關(guān)鍵點(diǎn)第一任何教程都要帶著架構(gòu)意識(shí)去看。文中如果還是/usr/local開頭的路徑大概率是為Intel Mac寫的。在M1上優(yōu)先看/opt/homebrew和原生arm64相關(guān)的描述。Homebrew的安裝路徑直接反映了架構(gòu)這比報(bào)錯(cuò)信息還可靠。第二能用Apple Clang和CodeLLDB的組合就先不要折騰GCC和GDB。LLDB的操作邏輯雖然和GDB有細(xì)微差別但它和macOS系統(tǒng)的契合度遠(yuǎn)超GDB。我在M1上調(diào)試C兩年多的經(jīng)驗(yàn)里L(fēng)LDB幾乎沒有遇到過(guò)讓人束手無(wú)措的問題GDB的兼容性就比較吃力。第三遇到問題先驗(yàn)證工具鏈本身再懷疑配置參數(shù)。你可以在終端里手動(dòng)編譯一個(gè)最簡(jiǎn)單的hello world用lldb手動(dòng)跑一遍確認(rèn)這個(gè)鏈路是通的之后所有的報(bào)錯(cuò)就都指向配置文件或者工程代碼而不是底層環(huán)境壞了。這種二分法排查方式是效率最高的因?yàn)榕渲脜?shù)再怎么錯(cuò)你不會(huì)懷疑到底層工具。我最初在M1 Mac上配調(diào)試環(huán)境的時(shí)候花了整整一個(gè)晚上才搞清楚為什么某個(gè)網(wǎng)上教程里g命令能用、但VS Code的tasks調(diào)用同一命令卻失敗——其實(shí)就是VS Code的集成終端沒有繼承我~/.zshrc里的PATH。后來(lái)我在settings.json里顯式指定了編譯器絕對(duì)路徑這個(gè)問題就再也沒出現(xiàn)過(guò)。配置上的小問題往往不是不對(duì)而是不在同一個(gè)環(huán)境上下文里。你只要時(shí)刻記著終端環(huán)境、VS Code任務(wù)環(huán)境、調(diào)試會(huì)話環(huán)境是三個(gè)不同的世界排查思路就會(huì)清晰很多。希望這篇偏實(shí)戰(zhàn)向的分享能在你的M1 Mac上少繞幾個(gè)彎。如果在配置過(guò)程中遇到這里沒覆蓋到的報(bào)錯(cuò)歡迎留言我盡量根據(jù)我踩過(guò)的坑給你出出主意。
返回列表
PREV
查看更多資訊
NEXT
返回資訊列表
亚洲熟妇AV综合网五月丁香伊人| 99热最新精品| 99亚洲精美视频在线观看| 大香蕉久久婷婷| 婷婷五月天成人网| ady狠狠入| 99热在线中文字幕| 都市激情蜜桃婷婷五月天| 免费精品99| 六月丁香激情综合| 久久综合激情| 中文字幕久久婷九女同| 精品国产乱码久久久久夜深人妻 | 丁香六月婷婷激情| 天堂中文国产| 无码碰碰| 久热九九| 天天摸天天肏| 五月激激激情综合网| 色综合偷拍| 九九在线精点品| 久久性爱网站| 色五月激情问网站| 丁香蜜臀黄色婷婷五月天| 99久久这里只有精品| 日本va视频| 日本色久| 美国天天操无码| 天天日天天色| 五月婷婷99热| 久热只有精品| 丁香五月天BBw| 97碰人人操| 国产精品久久久久久久久久久久| 九九热最新地址| 五月综合色播播丁香婷婷| 91色婷婷综合久久中文字幕二区| 九月婷婷激情久久| 超碰在线99| 色婷婷的五月天| 天天综合色丁香| 久9草在线观看视频| 丰满人妻一区二区三区| 丁香九九九九| 播五月,色五月,开心五月播放器| SESE无码AV| 五月天快乐开心激情网| 97人妻碰碰中文无码久热丝袜| 丁香婷婷影院| 沈娜娜av| 九九热视频这里只有精品| 久久9久久| 欧美色碰| 香蕉色色网| 在线另类| 丁香激情久久| 91超碰人人操| 激情久久肏屄视频| 天堂久久精品| 丁香婷婷啪啪| 亚洲久热| 天天插天天干| 久草热8精品视频在线观看| 日韩在线观看亚洲| 色婷婷先锋| 五月花婷婷丁香| 五月丁香日本片| 伊人婷婷大香蕉| 日噜噜色| 久婷自拍视频| 97在线/日本| 99热99精品在线观看| 99热这里是精品| 9l视频自拍9l视频自拍九色学生| 97碰碰电影| 精品久9| 99这里只有精品| 天天综合网91| 五月天另类视频| 狠狠爱激情网| 婷婷深爱五月天| 99热这里只有精品22| 欧美丁香五月夫妻天| 成人丁香婷婷五月天| 欧洲综合视频在线观看。欧洲,亚洲综合食品在线观看。 | 99这里有精品免费| 天天爽人人爽| 五月丁香六月在线| 久婷婷五月丁香在线观看| 激情性爱五月天| 五月丁香花视频| 99人人精品| 东京热免费视频网站| 国产1区2区| 精品欧美一区二区三区久久久| 国产SUV精品一区二区6| 又大又粗九一在线| 亚洲激情五月| 色婷婷丁香五月| 久久五月天色婷婷| 韩国久久少妇视屏| 婷婷欧美综合| 亚洲第一成人无码A片| 无码视频国内精品久久久| 色婷婷很很丝袜| 91无码色色| 婷婷激情六月中文| 91人妻人人做人碰人人爽九色| 51成人| 怕怕視頻| 99热这里只有精品18| 丁香五月天综合| 日韩精品999| 99视频| 思思 热 99| 狠狠插狠狠插| 五月天综合网| 色九九九九| 色婷| 这里只有精品视频在线看| 天天日,天天干,天天操| 丁香六月婷婷色XXXXX| 婷婷五月天av| 99久操| 久久婷婷热| 丁香久久五月天视频在线观看| 在热视频精品| www.久久久久| 国产亚洲99久久精品熟| 久久久激情视频| 丁香六月婷婷高清| 97色在线视频| 依人大香蕉在钱1| 激情九九六月激情免费视频| 手机激情网| 五月婷婷啪啪| 婷婷五月激情欧美大胆视频| 99爱视频精品| 丁香五月婷婷香| 五月天啪啪啪| 九九99热| 五月停停丁香| 涩涩五月天| 高清免费在线视频| 亚洲激情五月婷婷日日| 天堂A∨在线| 久久婷婷五月综合色区| 久婷婷五月丁香在线观看| 亚洲99精品欧美一区| 婷综合| 精品人妻在线免费观看| 综合五月草| 五月婷婷六月丁香激情| 免费视频WWW在线观看网站| 丁香九月激情久久| 色狠狠色综合| 91中文狠狠综合| 五月丁香啪啪网| 色吧五月婷婷| 日本天堂网站99| 丁香亭亭久久| 四色99久久| 一区二区三区四区牛| 色综合天天网| 久久激情五月| 26UUU一区二区| 五月婷视频在线| 色综合综合综合| 色久播播| 五月天综合网| 成人 在线 日韩| 色爱五月天| 操操操B| 99热国品免费| 五月开心久久| 狠狠色丁香五月婷巨| 激情五月丁香亭亭| 成人超碰网| 婷婷五月天最新综合你懂的 | 开心婷婷五月激情网小说| 婷婷六月啪啪| 久久亚洲无码| 思思热在线| 九热av| 美女天天久久| 五月天激情视频| 新97人人上人人| 丁香五月婷婷五月天| 91聚色综合网| 丁香五月婷婷香| 婷婷五月丁香成人网| 激情五月婷婷在线区| 日日操夜夜爽| 婷婷六月色丁香视频在线观看| 99热综合| 香蕉婷婷色五月| www.日日夜夜.com| 欧美A片在线视频免费观看| 婷婷一本和五月丁香| 婷婷五月天伊人| 久久久人妻不卡| 久久人妻久久| 日本色婷婷五月天成人电影| 亚洲九九99精品视频在线播放| 丁香五月丁香伊人| 色综合9| 丁香五月综合在线观看| 色爱爱综合网| 91婷婷色| 色久婷婷网| 婷婷六月色播| 欧美日韩国产一区| 99视频精品全部观看10| 婷婷亚洲色| 久久网日本| 性一交一乱一交A片久久四色| 内射人妻视频国内| 婷婷五月天激情五月天| 成人在线网站| 丁香五月婷婷五月| 狠狠色综合五月| 一起操 91N.com| 婷婷色成人| 最新久久99视频网站| 综合图片色色| 激情久久四色| 国产精品人成A片一区二区| 精品福利911| 五月天丁香婷婷视频网址 | 九九这里是免费的视频5| 丁香五月婷婷五月| 99热 免费| 91人久| 婷婷综合| 日韩AV在线免费| 天天操夜夜操| 精品无码色| 日本三级99人妇网站| 久久久久久性爱视频| 91九色无码日韩| 色爱亚洲| 99精吕视频在线观看了| 五月天色色激情综合| 精品欧美一区二区三区久久久| 婷婷激情五月天小说校园| 久久久五月婷婷| 五月天综合在线| 丁香婷在线| 97干在线观看视频| 婷婷桃色网| 碰超99| 激情婷婷五六月天| 91色噜噜狠狠狠狠色综合| 性爱视频久久| 四色五月婷婷在线观看| 久久黄色免费视频| 99自拍网| www.色色com| 久操热| 婷婷金品综合视频| 色综合久| 亚洲免费电影2| 久久免片| www.henhenl| 五月婷婷co.m| 久久久五月天| 中文在线成人| 激情婷婷五月社区| 97久久人人| 插插插色综合网| 色综合色五月| 五月激情六月综合| 婷婷播播五月天| 琪琪色五月天| 丁香五月激情综合婷综| 久超免费视频| 在线播放人妻| 人妻丰满精品一区二区A片| 九九aV| 日本一级| 国产精品扒开腿做爽爽爽A片唱戏| 久热伊人在91| 国产又爽又猛又粗的视频A片| 天天天在线观看| 午夜九九电影| 五月丁香少妇网| 激情国产五月| 亚洲精品一区无码A片| 亚洲愉拍99热成人精品| 色情五月天丁香社区| 激情网婷婷婷| 色人妻五月| 丁香五月亭亭六月综合激情网| 日韩在线视频网站| www.五月天色色.com| 五月婷婷综合天天操| 国产人妻777人伦精品HD| 婷婷丁香97| 五月婷婷啪啪| 狠狠99| 我爱va亚洲va52| 六月色色综合| 9999热这里只有精品| 亚洲久久视频| 在线VA视频| 六月婷婷天天操夜夜爽视频| 久久刺激网| 色七七九九| 99久在线精品99re5热视频| 伊人丁香五月婷婷潮吹| 中文字幕成| 亚洲AV无码影院| 综合九九久久| 91九色丨国产丨爆乳| 高清a片基地| 亚洲亚洲人成综合网络| 婷婷在线网| 综合久久十三| 丁香五月婷婷激情完整版| 九九热99精品| 激情图片99| 欧美色色日韩| 丁香五婷婷| 99热综合色图| 变态另类9| 九九九九国产| 色婷婷4| 久热这里只有精品在线观看 | 少妇搡BBBB搡BBB搡毛茸茸 | 久久婷婷热| 五月天伊人综合| 国产在线黄色| 五月激情小说| 久久涩视频| 色婷婷AV久久| 久久99精品久久久久久噜噜| 超碰精品在线| 天天干,天天舔| 天天日夜夜B久久| 色情丁香五月天| 欧美熟女乱又伦| 日日爱678| 一本道综合网| 99无码视频| 综合99综合久久久久久久| 亚洲午夜AV| 亚洲免费看片| 亚洲在线成人| 99热这里只有99| 综合色五月天| 亚洲精品永久久久久久| 思思热在线视频精品| 国产婷婷色综合AV蜜臀AV | 久久婷五月影院| 婷婷色片| 婷婷五月天无码熟女| 色色色色色色色色色999| 久久伊人五月天| 97碰久久| 久草婷妨| 久久亚洲A| 亚洲成人va| 99干日本| 日本三级第一页| 五月婷婷影| 夜夜人妻五月天| 色婷婷小说| 99re免费精品视频| 日韩啪啪自拍| 婷婷在线五月天观看| 五月亭亭性| 99精品在这里| 狠干综合| 亭亭五月激情亚洲在线| 五月婷婷六月丁香在线| 国内久久亭亭| 五月婷久久在线| 九九操操| 婷婷中文字暮| 六月婷婷私欲| 婷婷五月av| 拍真实国产伦偷精品| 精品夜夜澡人妻无码AV| 亚洲愉拍99热成人精品| 五月天啪啪啪| 91紱請| 日韩人妻无码精品| 综合久久99| 99re在线播放| 九九热这里只有精品23| 丁香在线视频| 丁香婷婷浪潮AV久久综合| 欧美色图天堂网色| 九九视频这里有精品| 色色丁香| 久久久这里都是精品| 天天摸天天做天天爱天天爽| 色婷婷成人色网| 这里只有精品日韩| 色狠狠色| 国产成人综合在线| 伊人网啪啪| 亚洲综合碰| 五月婷婷免费视频| 亚洲乱码日产精品BD| 色色色999| 婷婷五月,偷窥偷拍网| 午夜在线成人网站免费观看| 天天射射夜| 婷婷操逼| 99热国产在| 亚洲激情网| 91精品人妻少妇无码影院| 婷婷 月 丁香| WWW.国产| 97久久香草精品视频| 中文av网| 亚洲五月丁香综合网| 99日本黄站| 97干视频在线| 黄网免费观看| 亚洲操逼网| 99热这里只有精品1025| 97av在线视频| 五月天激情国产综合婷婷婷| 韩国情人在线电视剧免费观看高清版全集 | 色99色| 在线观看av网站| 丁香婷婷九月| caopeng97人人| 天干夜夜操| 日韩有码一区| 亚洲人妻五月丁香婷婷| 色色99| 激情5月婷婷狠狠干| 色婷婷电影网| 99热这里只有精品23| 人人澡玖玖一| 无码九九| AV成人在线网站| 99精品22| 丁香婷婷老司机久操| 激情欧美五月丁香| www.五月天色色.com| WWW,婷婷,COM| 毛片蕉地一二| 人人人操| 亚洲国产色婷婷| 极品少妇高潮啪啪AV无码| 五月天色综合服务平台| 超碰99热在线观看| 婷婷五月综合网| 九九视频在线观看视频在线播放69| 成人电影丁香六月天| 亚洲影院婷婷色| 激情五月天天狠狠久久| 色 免费网站视频| 99九九久久| 天天射综合网天天插| 97五月婷| 在线中文亚洲| 成人网站av免费网站推荐| 东京热伊人| Av性爱网站| 182tv992tv人之初午夜免费观看| 深爱激情69热| 先锋五月婷婷丁香草草| 刘玥av在线| 亚洲天堂aaaa| 国産精品| 婷婷成人基地| 亚洲性爱电影| 亚洲 小说 欧美 激情 另类| 丁香五月花影院| 第五色婷婷| 久久婷婷五月天| 青柠影视免费高清电视剧 | 大香蕉九操| 九九精品自拍| 丁香欧美| 99热超碰在线| 51精品国内探花| 激情欧美五月丁香| 婷婷六月丁香欧美视频在线| 五月天色色激情综合| 激情网五月| 99爱无码| 伊人五月天综合网| 五月丁香婷婷综合网| 99热精品一| 国产精品色婷婷99久久精品| 成人va在线播放| 日韩色色视频www| 亚洲综合婷婷五月| 久热精品9999| AV在线观看网站| 天天舔天天摸天天透| 五月丁香久久丝袜啪啪| 丁香五月影院| 婷婷五月色综合| 五月天激情小说婷婷基地| 91在线视频综合| 亚洲无AV在线中文字幕| 婷婷激情性爱| 五月人妻婷婷视频| 色综合播放| 狠狠色综合久久久久| 五月丁香成人| 99精品在线观看视频| 在线观看五月婷婷网| 久久色午夜在线导航| 日日操天天操| 婷婷激情五月天小说校园| 五月丁香美女| 99热播放| 亚洲AV成人在线观看| 日本色婷婷| 91se在线观看| 色综合另类| 五月天激情无码高清 | 亚洲操女| 思思re最新视频| 91操人| 丁香六月婷婷色播| 五月婷婷丁香婷婷| 精品,99| 九月婷婷综合八月丁香在线观看| 久九色| 色婷婷精品视频在线播放| 天天色色天天| 99久久网站| 天天综合网在线| 99热这里只有精品免费观看| 激情性五月天免费小说视频 | 欧美va| 亚洲色爽| 五月丁香婷婷色色| 99热个人在线| 久久久精品色| 在线99热| 五月天婷婷综合网| 成片免费观看视频大全| 天天色视频| www.丁香五月| 久久久噜噜噜久久人妻| 26uuu国产| 毛片毛片毛片毛片| 亚洲天天| 草做免费在线观看| 天天色天天爱天天爱天天爱y| 婷婷舔| 婷婷五月天亚洲色| 九九热视频免费的| 99热色在线精品| www.狠狠狠狠| 伊人色欲五月天| 亚洲国产色色| 婷婷五月婷婷五月| 五月婷婷网站| 停停色综合伊人| 先锋男人99资源| www.五月天婷婷姐姐| 久久婷婷丁香五月一二三| 丁香五月天欧美成人| 婷婷五月丁香四射| 丁香色五月AV在线| 久久婷婷五月丁香网| 婷婷永久在线| 99热国产在| 美女主播野战视步页| 亚洲综合色五月| 操操操AV| 色婷婷先锋| 色婷婷视频在线| 99无码视频| 久久九九激情五月天| 亚洲图色五月天| 操操自拍| 激情婷婷五六月天| 五月天天天色| 色色五月丁香| 一起草AV入口| 亚洲人人操| 九九黄色网| 综合五月亭亭9| 婷婷激情五月色综合| 久久这里只有精品8| 日日肏夜夜干| 成人av在线网址| 五月丁香亭亭| 美女爆乳18禁www久久久久久| 激情婷婷五月在线合集| 91欧美| 开心五月综合激情综合五月| 婷婷色五天| 婷婷操逼| 97在线精品| 国精产品一区一区三区免费视频| 毛片蕉地一二| 丁香五月亚洲AV| 日本一级一片免费视频| 五月丁香六月婷婷在线小说视频| 吉澤明步Av一區二區| AV性爱在线| 色婷婷五月天偷拍| 激情性爱五月天网页| 亚洲人操亚洲人| 九洲一级A片| 六月丁香综合999| 久久综合丁香激情五月| 日日干天天| 五月丁香A片| 99热成人永久免费| 天天插天天爽| 青青久在线视频免费观看| 色播五月丁香综合| 婷婷97狠狠干| 99这里有精品视频| 超碰人人摸人人操| 99久久丝| 99热免费| 伊大人久久| 女性自慰系列第五页| 五月婷婷开心六月激情小说| 狠狠插狠狠操| 影音先锋91资源站| 婷婷丁香成人在线视频| 欧美色色色色色| 色色色色色九九九九九| 日日爽日日操| 成人日韩欧美| 午夜婷婷久久 | 婷婷五月在线影院| 欧美久草在线日本一级特黄大片做受9在线观看韩国电影《两个女人》未删减-毛片 | WWW.激情| 久久A区B区| 综合图片色色| 欧美一级a| 成人免费视频一区| 伊人狠狠丁香婷婷综合尤物| 这里只有精品在线观看视频| 男同91 | 97色色婷婷五月天| 91精品综合久久久久久五月丁香| 色婷婷成人做爰A片免费看网站 | 人妻丰满精品一区二区A片| 久久婷婷综合网| 五月在线| 婷婷字幕在线| 深爱激情五月天婷婷网| 性一交一乱一交A片久| 久热人妻| 中文资源在线a| 91人人爽人人操| 色婷婷在线视频综合| 天天做天天爱天天爽| 亚洲成人日韩无码精品| 蜜乳国产网站| 亚洲综合在线视频| 丁香狠狠操| 久久久久思思热| 在线观看av网站| 婷婷丁香五月天熟女丝袜| 青草激情在线| 久久香蕉影院| 久久色在线视频| 成人丁香五月天| 七七色综合| www.99热最新视频8| 色播播五月天| 欧美激情丁香五月天久久婷婷一区| 少妇高潮一区二区三区99欧美| 大香蕉人在线65| 熟女激情五月天 | 日本天天综合| 亚洲第一成人无码A片| 人人人人人人人人人草| 97久久超碰| 日本在线视频www色| 五月色婷婷中文字幕| 殴美激情综合网| 色欲婷婷五月天| 色五月婷色彩免播放器| 色五月综合网| 99久久免费性爱视频`| 丁香五月天视频| 亚洲avjiujiur91| 无人区码一码二码三码医生系列| 五月丁香色狠狠干大屄| 欧美性爱专区| 噜噜噜久久| 国产成人av在线播放| 久久这里都是精品| 五月综亚洲| 亚洲99精品九九在线| 天天操天天操天天操天天操天天操天天操天天操天天操天天操 | 久久人妻精品| 97在线精品| 日韩色五月| 激情丁香五月| 久久99激情| 天天日天天插| 99成人小视频| 另类视在线| 婷婷欧美| 亚洲色婷婷视频| 综合色网站| 另类视频五月天| 色婷婷色五月综合| 亚州第一黄网| 久久99综合| 精品九九视频| 97丁香五月| 婷婷综合五月| 五月天激情无码| 激情性爱网站| 91人人操人人爱| 欧美内射AA| 婷婷成人视频| 另类综合婷婷五月天欧美视频| 中文精品在| 国产又色又爽又黄又免费| 色五婷婷开心缴| 亚洲小视频免费观看| 婷婷综合激情| 99er免费在线观看| 五月天婷婷AV| 1024国产在线| 一本伊人色婷| 天天做夜夜爽| 五月婷婷综合在线视频| 亭亭色色五月天| 丁香五月a| 99爱免费在线视频| 久久99热这里只有精品 | 亚洲超碰在线| 久久人人人人妻| 综合网啪啪| 亚洲色就是色色色| 欧美久热| 日日操夜夜爽| 天天爽天天弄| 亚洲一级色电影| 99欧美热| 亚洲天堂99| 婷婷刺激综合| 五月天影院| 激情综合婷婷久久| 九九视频免费| 嫩草国产| 久久婷综| 五月天婷婷综合网| VA色婷婷| 日本欧美成人片AAAA| 蜜臀av在线成人电影| 七七久久婷婷| 亚洲妇女熟BBW| 五月天大香蕉| 天天爽天天做| 99热6这里只有精品6| 激情久久肏屄视频| 久婷自拍视频| 九九色婷婷Av| 丁香五月婷婷啪| 五月天色婷婷综合| 天天日狠狠| 五月丁香婷婷色播无码| 婷婷性爱| 人妻22p| 国语精品探花| 99爱免费在线观看| 丁香五月影院| 丁香五月综合无码趴趴| 五月婷婷久久爱| http://www.com久久久精品一区| 亚洲色色色| 欧美色婷婷| 婷婷视频在线碰| 丰满人妻一区二区三区| 熟女婷婷网站一婷婷五月一丁香婷婷一婷婷激情网| 最熟少妇乱码| 在线五月婷| 又大又粗九一在线| 97热在线精品| 婷婷成人AV| 色色a| 日韩五月丁香| 我爱婷婷五月天综合88| 天天色伊人| 婷婷五月 丁香六月| 丁香五月天啪啪| 天天爽天天干| 久久在这里99| 久久丁香五月| 深爱五月中文字幕| 色噜噜综合网| 99精品在线播放| 狠狠操狠狠爱| 夜夜爽天天| 亚洲熟妇AV综合网五月丁香伊人| 丁香婷婷五月天激情四射| 性av| 色色a| 婷婷九九| 色婷婷五月在线| 夜夜谢天天干| 无码日本精品XXXXXXXXX| 丁香五月av| 搡BBBB搡BBB搡18| 国内一级片| 九九青青草成人| 天天色天天日| 少妇AB又爽又紧无码网站| 免费视频WWW在线观看网站| 91男女视频在线观看| 精品AV无码超碰| 大香婷婷| 在线超碰免费| 99九九99九九九视频精彩| 人妻av在线| se色99| 另类视频丁香五月| 婷婷激情图片| 婷婷五月色情天| 99热精品免费| 伊人大香蕉爱聚| 天天肏高清在线| 超碰av在线| 婷婷伊人激情婷婷| 五月激情久久| 夜夜爽天天日| 9久久久久久久久久久| WWW.婷婷| 97五月婷| 色婷久九| 色婷婷丁香五月在线| 激情开心五月天婷婷基地丁香社区| 爱婷婷五月| 五月丁香婷婷综合视频| 五月天激情网图片| www久久久久久久| 色婷| 管管補管管紱| 婷色五月天| 色婷网| 亚洲AV日韩AV永久无码网站| site:xmssd.com| 日日肏天天操| 青青草tp| 日日噜噜夜夜狠狠久久丁香五月| 天天干天天日蜜臀av| 丁香色成人| 丁香伊人综合| 五月色丁香| AA片在线观看视频在线播放| 色综合香蕉| 婷婷另类开心| 激情五月天综合网| 99热网精品| 欧美操人| 夜夜躁爽日| 欧美日综合| 这里只有精品69| 大香蕉av在线| www.99操| 天天爽成人综合网站| 五月天天爽| 婷婷五月在线观看| 久久婷婷五月激情综合| 激情图片婷婷| 久久久久久综合88| 99操不停| 天天插天天很| 色婷婷久久久| 热九九九九| 狠狠999| 久久只有18视频| 国产女人十八水真多1| www.sd-xiangsu.cpm| 狠狠狠狠狠狠色| 狠狠狠狠草草| 天天日日天天| 五月丁香综合中文| 爱操天堂| www.狠狠色.com| 色婷婷小说| 日韩五月婷婷久久| 电影蜘蛛女| 色九月婷婷综合| 996热re视频在线观看视频| 五月婷婷就去色| www.色综合| 97涩婷婷婷婷基地| 婷婷五月69| 精品人妻在线| 99ri视频在线观看| 天天干夜夜欢| 9l视频自拍9l九色成人| 激情综合国产| 五月天婷婷综合免费| .青娱乐天天操B| 婷婷丁香五月激情综合站_久久五月丁香激情综合_开心五月综合激情综合五月_婷 | 婷婷综合激情| 亚洲精品视频电影| 五月婷亚洲精品| 久久涩视频| 狠狠狠狠狠狠狠狠狠狠狠色宗合图片| 婷婷五月天开心网| 色月丁| 深夜婷婷五月丁香| 日日噜噜夜夜狠狠久久丁香六月| 九九99精品免费播放| 激情99热| 91操操| 日韩啪啪视频| 丁香五月综合激情久久潮喷| 天天舔天天插天天干| 亚洲人妻av伦理| 激情六月下句是什么| 亚洲天天| 五月丁香网视频| 超碰在线国产| 99热91| www久久久| 任你艹| 26UUU欧美| 91精品丝袜久久久久久| 天天色综合综合| 熟女色色一区二区| 五月丁香六月花| 性欧美大战久久久久久久83| 97亚洲婷婷| AA丁香综合激情| 青青草原亚洲天堂| 五月丁香六月情| 伊人婷婷五月天av| 国产在线黄色| 色香久久| 9久国产精品| 九九热黄色| 婷婷综合激情| 五月久久五月激情| 伊人91| 天色综合网站| 啪啪日本欧美| 丁香五月成人社区| 成人视频在线免费播放| 另类A片| 99热r| 丁香五月电影| 狠狠狠婷婷五月综合| 亚洲精品久久久无码| 激情综合网激情五月网| 久久女伦| 九九亚洲视频| 久久久婷婷五月亚洲97号色| 91精品在线看| 激情六月下句是什么| 婷婷亚洲影院| 另类激情五月| 久久综合婷| 色五月综合在线| 婷婷在线五月天观看| 婷婷欠久少妇| 五月天影院| 99精品高潮| 日韩AV大全| 九九www| 超碰久热| 天天插AV丝袜中| 婷婷综合五月| 精品久久久中文字幕大豆网推荐理由| 婷婷播5月| 成片免费观看视频大全| 国产黄大片在线观看画质优化| 亚洲aV写真天天综合网久久| 黄网网站在线播放| 九八Av| 婷婷五月天亚洲五码| 欧亚色色| 久久久久视剧HD| 26uuu在线观看| 美女亚洲五月丁香| 91色欲综合| av在线观看网站| 亚洲五月婷天天操| 五月久久网| 色偷偷AV亚洲男人的天堂| 日日夜夜天天综合| 欧洲激情网站| 精品九九久久| 久久九九热视频| 怡红院院久久| 五月丁香婷婷综合久久| 欧美在线视频99| 开心五月婷婷婷美女| 天天久久狠狠色综合| 另类专区在线观看| 国产五月天欧美色| 都市激情蜜桃婷婷五月天| 亚洲不卡123| 99精品视频网站| 这里只有精品视频99| 九九热视频精品2| 日韩成人电影av| 婷婷99| 伊人玖玖精品| 五月天激情久色| 欧美日本VA| 色婷婷人人| 99欧美| 色五月婷婷在线| 五月色亭丁香| 中文字幕在线不卡| 色播激情| 精品二区| 丁香六月激情| 热99在线精品| 色婷綜合网| 婷婷九月色| 成人五月天综合网| 99热综合网| 蜜桃人妻无码AV天堂三区| 狠狠操在线视频| 秋霞免费三级片| 五月婷婷婷| 黄色av网站在线免费播放| 狠狠干无码| 欧美在线视频免费播放| 丁香狠狠色婷婷久久无码视频| 亚洲精品乱码久久久久久综合| 中文字幕在线播放视频| 婷婷第一页| 欧美97超碰| 99ER热精品视频| 夜夜躁爽日日| 性爱网五月天| 夜夜资源站| 久久精彩免费视频| 婷婷色丁香五月| 小视频在线亚洲| 精品人人操| 综合狠狠干| 婷婷之玖玖| 亚洲精品又粗又大又爽A片| 99色亚洲| 伊人激情啪啪| 五月丁香六月情| 婷婷五月天美女视频| 激情五月天之五月婷婷| 五月丁了香蕉综合| 99久久99视频| 在线观看视频1区| 色婷婷六月| 五月婷婷深深爱| 五月天另类激情在线| 五月天激情小说| 丁香五月婷婷啪啪啪| 亚洲99综合| 欧美精产国品一二三区| WWW99热| 热思思| 人人爽欧美婷婷久久久五月丁香| 日本成人小说婷婷六月| 亚洲久久婷婷丁香五月天| 五月丁香六月婷婷免费| 婷婷久久婷婷色五月| 99热热九九| 6080av| 色五月婷激情| 97婷婷五月天| 夜夜躁爽日| 狠狠干夜夜干| 久久五月网| 国产激情视频在线观看| 这里只有精品视频| 久久精彩免费视频| 五月天丁香| 九色视频91| 可以免费观看的AV| 亚洲春色奇米影视| 国产99久| 色色九九五月天| 97人人操com| 99热丁香五月| 综合色99| 五月天色婷伊人| 五月婷婷色播视频| 婷婷激情综合无月| 大香蕉院线| 五月天激情电影| 天天舔天天摸| 操91| 色色五月天婷婷| 香蕉网婷婷| 五月丁香黄色| 色婷婷88| 五月婷婷视频啪啪美女| av网站中文| 操熟女成人网| 激情五月六月| 久久婷婷色| 久久久99精品免费观看| 人人操超碰| 99操中文视频| 五月天婷婷色在线视频免费观看 | 在线综合91| 精品网站:999WWW| 26uuu青青| 综合视频五月| 欧美激情综合色丁香婷婷五月天| 五月天成人在线播放丁香| 五月婷婷啪啪| 久久性爱视频网站| 色逼综合网| 婷婷狠狠操| 日在线V视频在线播放| 妻久久人久久| 婷婷丁香18| 色婷婷中文| 成人五月天丁香婷| 五月天婷婷丁香视频| 久久人妻人人| 99国产精品白浆在线观看免费| 久久久久久婷| 青青.com| 色五月综合激情| 天天爽天天干| www.色五月| 亚洲成人在线观看av| 一月婷婷色色| 99re66热这里只有精品| 婷婷丁香五月高清| 九九这里都是精品| 九月婷婷人人操人人舔人人爱| 91操在线视频| 人人做人人看人人摸| 成人五月天丁香婷| 色爆五月| 亲子乱AV一区二区三区下载| 日日肏天天操| 丁香六月在线| av人人操| 欧美精产国品一二三区| 色五月色综合| 婷婷五月天影院| 婷婷五月天涩涩| 久鲁鲁色网| 日本狠狠色| 国产欧美日韩综合精品一区二区| 级情九色| 美女天天爽| 射满了还射免费在线观看 -午夜版全集-新视觉影院| 99九九玖玖| 人人人操97| 伊人狠狠丁香婷婷综合尤物| 丁香六月在线综合| site:minyis.com| 五月丁香六月婷婷久久肏| 97人妻超级碰碰碰碰碰| 99热最新| 久久综合影院| 欧美一级a| 激情综合网之激情五月| 四月丁香五月婷婷久久| 这里只有精品免费视频| 91综合网| 天天色爽| 亚洲激情婷婷| 国产激情在线| 国产婷婷五月天| 国产精产国品一二三在观看 | 天天色综合网吨吧| 亚洲精品色| 激情综合网址| 这里只有精品视频在线| 色婷网站| 精品一区二区三区木瓜| 婷婷综合在线| 久久视频婷婷| 亚洲99热| 色五月婷婷中文字幕| 九热免费视频| 五月丁香影视| 国产激情在线观看| 狠狠色丁香婷婷基地| 开心五月天激情网| 五月丁香激情怕怕| 99在线观看精品视频| 97婷婷五月丁香| www.久久久久久久| 五月婷婷丁香啪啪| 991精品在线视频| 亚洲色99| 色香久久| 婷婷五月天综合在线 | 久久九网| 青青草深爱激情网| 91久久精品国产91性色TV| 九九亚洲天堂| 婷婷九月激情网| 欧美人与性动交CCOO| 玖玖在线| 六月丁香婷婷综合狠狠爱夜夜爱| 欧美日本日韩| 五月色情婷婷开心五月色情| 五月婷婷成人| 99热99re6国产在线播放| 伊人在线视频| 色五月婷婷、老熟女| 精品夜夜澡人妻无码AV| 91超碰在线观看| 色欲丁香| 97婷婷丁香| 激情六月天婷婷| 香蕉影院色| 久久er99| 久久91久久精品久久| 五月成人天| 国内自拍97在线| 五月婷婷之美女图片| 色婷狠狠| 亚洲第一综合| 五月 激情视频| 婷婷六月天激情| 性爱人人网| 五月婷婷六月丁香| 日韩av网站在线观看| 天天干狠狠| 综合色吧| 婷婷天堂综合| 色欲九区| 九九这里只有精品| 日日天天操| 国产99久| AV操操操| 97碰在线| 久草热在线视频| 综合精品99| 婷婷的色色五月天| 九九热99视频在线| 色色五月天网站| 99热啪啪| 久久精品99国产精品日本| 色五月婷婷DVD| 永久热91| 久久人妻久久| 性韩日色婷婷五月天激情啪啪XXX| 777精品久无码人妻蜜桃| SS丁香五月婷婷| 九色在线观看91av| 五月天婷婷社区| 久久这里有精品在线观看| 综合99在线| 中文激情网| 99在线视频精品| 九月av在线| a在线观看| 美女婷婷六月色| 大胆伊人久久| 亚洲色综合| 99综合99| 亚洲激情五月| 五月天激情久久| 日韩在线五月天婷婷| 大香蕉伊人99|