中文亚洲精品无码_熟女乱子伦免费_人人超碰人人爱国产_亚洲熟妇女综合网

當(dāng)前位置: 首頁(yè) > news >正文

順德網(wǎng)站制作案例教程培訓(xùn)方案模板

順德網(wǎng)站制作案例教程,培訓(xùn)方案模板,南橋網(wǎng)站建設(shè),好看的創(chuàng)意網(wǎng)站設(shè)計(jì)花費(fèi)了比較長(zhǎng)的時(shí)間,解決了編譯過程中遇到的許多問題后,終于把這個(gè)開源的工程編譯好了,運(yùn)行post build 腳本將需要的鏈接文件拷貝好。正當(dāng)我以為沒有任何問題了,雙擊可執(zhí)行程序運(yùn)行。 結(jié)果運(yùn)行起來的時(shí)候報(bào)錯(cuò)了,提示無…

花費(fèi)了比較長(zhǎng)的時(shí)間,解決了編譯過程中遇到的許多問題后,終于把這個(gè)開源的工程編譯好了,運(yùn)行post build 腳本將需要的鏈接文件拷貝好。正當(dāng)我以為沒有任何問題了,雙擊可執(zhí)行程序運(yùn)行。

結(jié)果運(yùn)行起來的時(shí)候報(bào)錯(cuò)了,提示無法正常啟動(dòng),根據(jù)這個(gè)這個(gè)報(bào)錯(cuò)的提示,網(wǎng)上搜了一下,都說是缺少dll庫(kù)導(dǎo)致的,于是將post build腳本又運(yùn)行了一遍,重新雙擊打開可執(zhí)行程序,還是報(bào)一樣的錯(cuò)。

那么是缺少那個(gè)dll庫(kù)導(dǎo)致的呢?于是我打開系統(tǒng)的事件查看器,從里面找到了應(yīng)用程序錯(cuò)誤事件,點(diǎn)擊看到了詳細(xì)信息,從描述來看出錯(cuò)的模塊是libprotobufd.dll,是在運(yùn)行這個(gè)dll的過程中出現(xiàn)的異常,并非缺少dll導(dǎo)致。

{// Use IntelliSense to learn about possible attributes.// Hover to view descriptions of existing attributes.// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387"version": "0.2.0","configurations": [{"name": "(msvc) launch","type": "cppvsdbg","request": "launch","program": "D:\\Kicad\\kicad-source-mirror\\build\\out\\bin\\kicad.exe"}]
}

為了進(jìn)一步弄清楚這個(gè)庫(kù)出錯(cuò)的原因和位置,于是在vscode編輯器中將C/C++相關(guān)的插件安裝上,設(shè)置好debug條件,運(yùn)行debug功能后,跳轉(zhuǎn)到了出現(xiàn)異常的代碼位置。

從給的錯(cuò)誤信息可以看出來_Pnext是一個(gè)非法值,那么這個(gè)值為什么是一個(gè)非法值,目前猜測(cè)它是一個(gè)空指針,或者指向的內(nèi)存不對(duì),目前只是有這樣一個(gè)概念,帶著這樣的疑惑繼續(xù)分析原因。

_EXPORT_STD template <class _Ty, class _Other = _Ty>
_CONSTEXPR20 _Ty exchange(_Ty& _Val, _Other&& _New_val)noexcept(conjunction_v<is_nothrow_move_constructible<_Ty>, is_nothrow_assignable<_Ty&, _Other>>) {// assign _New_val to _Val, return previous _Val_Ty _Old_val = static_cast<_Ty&&>(_Val);_Val         = static_cast<_Other&&>(_New_val);return _Old_val;
}

exchange的作用是將第一個(gè)參數(shù)設(shè)置成第二個(gè)參數(shù)的值,然后返回第一個(gè)參數(shù)的值,所以auto _Pnext = _STD exchange(_Myproxy->_Myfirstiter, nullptr)可以理解為:

_Pnext = _Myproxy->_Myfirstiter;

_Myproxy->_Myfirstiter = nullptr;

上述只是簡(jiǎn)單理解這個(gè)函數(shù)的功能,這樣看這里也沒有問題

到了這里我們還是無法知道_Pnext指向的區(qū)域?yàn)槭裁醋兂煞欠ǖ?#xff0c;還有就是_Pnext到底指向的是什么,也就是它到底是什么,怎么來的,于是根據(jù)發(fā)生異常的調(diào)用棧進(jìn)一步追蹤,看一下具體是怎么發(fā)生的。根據(jù)調(diào)用棧我們看到了一個(gè)明顯的可能有問題的地方那就是std::string::~basic_string(),這里先猜測(cè)string對(duì)象析構(gòu)的時(shí)候發(fā)生了異常,析構(gòu)的時(shí)候一般會(huì)去釋放資源,是不是釋放的資源出來問題,所以才導(dǎo)致的異常。

bool EncodedDescriptorDatabase::DescriptorIndex::AddSymbol(absl::string_view symbol) {SymbolEntry entry = {static_cast<int>(all_values_.size() - 1),EncodeString(symbol)};std::string entry_as_string = entry.AsString(*this);// We need to make sure not to violate our map invariant.// If the symbol name is invalid it could break our lookup algorithm (which// relies on the fact that '.' sorts before all other characters that are// valid in symbol names).if (!ValidateSymbolName(symbol)) {ABSL_LOG(ERROR) << "Invalid symbol name: " << entry_as_string;return false;}auto iter = FindLastLessOrEqual(&by_symbol_, entry);if (!CheckForMutualSubsymbols(entry_as_string, &iter, by_symbol_.end(),*this)) {return false;}// Same, but on by_symbol_flat_auto flat_iter =FindLastLessOrEqual(&by_symbol_flat_, entry, by_symbol_.key_comp());if (!CheckForMutualSubsymbols(entry_as_string, &flat_iter,by_symbol_flat_.end(), *this)) {return false;}// OK, no conflicts.// Insert the new symbol using the iterator as a hint, the new entry will// appear immediately before the one the iterator is pointing at.by_symbol_.insert(iter, entry);return true;
}

于是繼續(xù)追蹤代碼里面是哪個(gè)執(zhí)行造成的,還是根據(jù)前面的調(diào)用棧,我們看到執(zhí)行完AddSymbol后,會(huì)調(diào)用~basic_string(),那么根據(jù)上面的代碼來看,應(yīng)該是entry_as_string這個(gè)對(duì)象的使用有問題。

根據(jù)debug信息,看到entry_as_string的內(nèi)存有問題,到這來還不知道是因?yàn)楸会尫帕?#xff0c;還是本身創(chuàng)建出來的就有問題,繼續(xù)追蹤這個(gè)是怎么創(chuàng)建出來的。

std::string AsString(const DescriptorIndex& index) const {auto p = package(index);return absl::StrCat(p, p.empty() ? "" : ".", symbol(index));}
std::string StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) {std::string result;// Use uint64_t to prevent size_t overflow. We assume it is not possible for// in memory strings to overflow a uint64_t.constexpr uint64_t kMaxSize = uint64_t{std::numeric_limits<size_t>::max()};const uint64_t result_size = static_cast<uint64_t>(a.size()) +static_cast<uint64_t>(b.size()) +static_cast<uint64_t>(c.size());ABSL_INTERNAL_CHECK(result_size <= kMaxSize, "size_t overflow");strings_internal::STLStringResizeUninitialized(&result, static_cast<size_t>(result_size));char* const begin = &result[0];char* out = begin;out = Append(out, a);out = Append(out, b);out = Append(out, c);assert(out == begin + result.size());return result;
}

這里重點(diǎn)是std::string result;這個(gè)result有問題,但是有實(shí)在看不出代碼哪里有問題,于是只能繼續(xù)debug,進(jìn)入這個(gè)函數(shù)后一步步運(yùn)行,看一下具體是哪里出了問題。

在運(yùn)行的過程中,這個(gè)result的就沒有顯示出來,它的內(nèi)存是什么,指向哪里根本不知道。

只知道這個(gè)函數(shù)返回的時(shí)候,entry_as_string指向了一個(gè)錯(cuò)誤的內(nèi)存,最終導(dǎo)致崩潰,目前從debug的過程來看不出具體是什么原因?qū)е碌膯栴}。

于是寫了一段類似的測(cè)試代碼,看看能不能復(fù)現(xiàn)到這樣的問題,也可以對(duì)比這個(gè)過程中有哪些不一樣,看看能不能找出根本原因。

測(cè)試代碼在運(yùn)行的過程中沒有出錯(cuò),只能看到它們不一樣的地方

異常代碼測(cè)試代碼
1std::string result 沒有跑構(gòu)造函數(shù)std::string result 正常跑構(gòu)造函數(shù)
2debug過程沒有顯示result的信息debug過程會(huì)顯示result的信息
3函數(shù)里面的begin、out等變量也沒有信息函數(shù)里面的begin指向和顯示沒有問題

目前猜測(cè)可能是std::string StrCat(const AlphaNum& a, const AlphaNum& b, const AlphaNum& c) 函數(shù)里面的代碼被優(yōu)化了導(dǎo)致的。

http://m.risenshineclean.com/news/61005.html

相關(guān)文章:

  • 電話銷售做網(wǎng)站認(rèn)證seo優(yōu)化上海牛巨微
  • 旅游網(wǎng)站建設(shè)價(jià)格簡(jiǎn)述網(wǎng)絡(luò)營(yíng)銷的概念
  • 網(wǎng)絡(luò)營(yíng)銷論文總結(jié)seo是什么
  • 尋找建設(shè)網(wǎng)站客戶國(guó)外友鏈買賣平臺(tái)
  • 哈爾濱網(wǎng)站設(shè)計(jì)哪里有做廣告聯(lián)盟代理平臺(tái)
  • 網(wǎng)站頁(yè)面那個(gè)圖怎么做五種網(wǎng)絡(luò)營(yíng)銷推廣方法
  • 深圳網(wǎng)站建設(shè)黃浦網(wǎng)絡(luò)-騙子seo需求
  • 國(guó)外網(wǎng)站推廣公司百度推廣投訴中心
  • 網(wǎng)站建設(shè)模板源代碼seo搜索引擎優(yōu)化步驟
  • 怎樣做化妝品公司網(wǎng)站國(guó)際新聞?lì)^條今日要聞
  • 做一普通網(wǎng)站需要多少錢武漢seo群
  • 怎么做購(gòu)物平臺(tái)網(wǎng)站企業(yè)建站
  • 下載吧網(wǎng)站整站源碼四川最好的網(wǎng)絡(luò)優(yōu)化公司
  • 廣西新宇建設(shè)項(xiàng)目有限公司網(wǎng)站青島seo優(yōu)化
  • 傳奇開服表seo教程培訓(xùn)
  • 做化學(xué)題的網(wǎng)站百度搜索廣告價(jià)格
  • 青州做網(wǎng)站的網(wǎng)絡(luò)公司深圳龍崗區(qū)布吉街道
  • 彩頁(yè)模板圖片seo顧問是什么
  • 國(guó)內(nèi)做受網(wǎng)站網(wǎng)店代運(yùn)營(yíng)一年的費(fèi)用是多少
  • 駿域網(wǎng)站建設(shè)專家品牌網(wǎng)站建設(shè)公司
  • 簡(jiǎn)述網(wǎng)站內(nèi)容管理流程程序員培訓(xùn)機(jī)構(gòu)排名前十
  • 企業(yè)做一個(gè)網(wǎng)站多少錢網(wǎng)易企業(yè)郵箱
  • 石家莊做網(wǎng)站制作公司重慶百度推廣開戶
  • 中國(guó)疫情最嚴(yán)重的五個(gè)省排名湖北百度seo排名
  • 手機(jī)app網(wǎng)站模板余姚網(wǎng)站如何進(jìn)行優(yōu)化
  • 網(wǎng)站建設(shè)捌金手指花總十一整合網(wǎng)絡(luò)營(yíng)銷是什么
  • 易支付做網(wǎng)站接口怎么賺錢網(wǎng)絡(luò)營(yíng)銷策略理論
  • 一個(gè)網(wǎng)站怎么留住用戶專業(yè)網(wǎng)站建設(shè)公司
  • 你去湖北省住房城鄉(xiāng)建設(shè)廳網(wǎng)站查seo專員很難嗎
  • 動(dòng)態(tài)ip上做網(wǎng)站網(wǎng)絡(luò)軟文是什么意思