你的ABAP程式給佛祖開過光麼?來試試Jerry這個小技巧
最近Jerry在忙一個專案,技術棧換成了nodejs平臺,語言換成了JavaScript,因為趕專案進度,一直沒時間更新公眾號。感謝大家的支援,關注人數還是慢慢地增長到了3000。
今天我們來聊聊一個比較輕鬆的話題。
當今這個數字化時代,大家的生活都離不開網際網路。網際網路公司為了確保伺服器不會因為軟硬體問題當機而影響自己的業務,紛紛使出渾身解數,包括設計更健壯的架構,實現高質量的程式碼,提供硬體條件更好的機房等。當然也有一些腦洞大開的公司,另闢蹊徑,採取讓佛祖對伺服器進行開光的方式,來實現" 伺服器永不當機 "的美好願望。
下面是Jerry從一則搜狐新聞上看到的一些有趣的圖片,轉貼於此,新聞原文網址:
http://www.sohu.com/a/116621959_430930
有請高僧給伺服器貼上靈符:
看著這個符咒,Jerry想起了自己曾經通關過無數遍的仙劍奇俠傳98柔情版裡各種各樣的靈符。
高僧正在認真地進行開光儀式:
這些難道是IT管理員,或者SAP稱呼的Basis們,虔誠地跪在伺服器前向佛祖祈禱“ 永不當機 ”嗎?
除了“ 永不當機 ”外,“ 永無bug ”也是程式設計師們另一個美好的願望。
於是乎,有些程式設計師希望通過在程式碼頭部加上這種註釋,來獲得一些心理上的慰藉。
而對於SAP ABAP程式設計師,一看到bug這個詞,最容易聯想到什麼?不知道大家心中的答案是什麼,Jerry的答案是: ST22 。
ABAP程式在執行時,如果遇到了沒有捕捉的異常,程式會終止,同時ABAP執行時會產生一個類似Windows系統藍屏的core dump:
這種dump可以在事務碼ST22裡檢視。一般來說,一個有經驗的ABAP程式設計師,通過分析ST22裡提供的程式崩潰時的上下文資訊,系統變數的內容,呼叫棧等等,不難修復這種bug。
下圖是ST22裡dump的一個例子,值得一提的是大家可能會忽略的BASIS Developer View, 裡面包含了引起執行時錯誤的ABAP語句對應的C語言實現的具體檔案位置,比如下圖的 //bas/753_STACK/src/krn/abap/runt/abassert.c 。
大家還記得我寫過的 聊聊C語言和ABAP 這篇文章麼?
這裡我偷個懶,把那篇文章裡介紹C語言和ABAP語言關係的文字引用過來:
為什麼這篇文章要把C語言和ABAP放在一起講,而不是別的語言比如Java和ABAP呢?因為ABAP語言底層是基於C/C++實現的,包括其關鍵字(比如最簡單的關鍵字WRITE的C++實現有2千多行)和虛擬機器(ABAP Runtime)。SAP內部的一群電腦科學家們發明了ABAP這門偉大的語言,由它實現的各種SAP應用幫助了全球超過180個國家和地區的客戶們更好地執行其業務。
通過Google我們能搜尋到一些關於這些SAP電腦科學家們的介紹,比如這個連結:
SAP內部的Netweaver開發伺服器上是能夠瀏覽這些C語言程式碼的。Jerry 2017年在德國工作時,業餘時間比較多,相關的C程式碼也閱讀了不少,比如ABAP裡最簡單的WRITE關鍵字,其C語言實現有2000多行。可惜因為這些C語言實現對客戶和partner不可見,因此無法在這裡給大家分享它們的邏輯。
再回到ST22。相信每一位ABAP程式設計師執行程式碼看到ST22的dump後,心裡都會很沮喪。這個時候,如果有佛祖能夠給引起bug的程式碼開開光,那將是一件很鼓舞人心的事情。
相信無論使用何種程式語言的程式設計師,看到下圖紅色高亮的這兩行字,都會精神為之一振:
-
佛祖保佑,永無bug
-
這段程式碼佛祖已經做過開光處理,絕無可能再產生bug
如何實現ST22裡這個顯示效果?其實ST22和Windows系統藍屏顯示邏輯一樣,都是一段靜態模板文字加上執行時異常的實際動態內容合併而成。
模板文字儲存在ABAP Netweaver伺服器的資料庫表裡。我們只需要在ST22的框架程式碼把模板文字從資料庫表讀出之後,將佛祖開光的文字動態新增到模板文字的頭部,就大功告成了。
實現步驟非常簡單,在ST22標準程式 SAPMS380 的subroutine read_snapt 內建立一個 隱式增強 。
從read_snapt的程式碼能看出ST22的模板文字是儲存在資料庫表 SNAPT 裡的。
把佛祖開光的文字注入到read_snapt輸出的頭部:
這段隱式增強的程式碼我放在了我的Github上:
https://github.com/i042416/KnowlegeRepository/blob/master/ABAP/SmallApp/210_god.abap
最終效果就是每次出現了執行時程式執行錯誤後,程式設計師到ST22裡檢視dump時,總能看到“ 佛祖保佑,永無BUG ”幾個字。
這個例子其實也再次體現了Jerry之前提到的,作為 ABAP開發環境和執行環境和二而一的Netweaver ,給開發者提供了強大的可擴充套件性。
最後也是最重要的
1. 本文提供的步驟涉及到了對ABAP框架程式碼的隱式增強,請謹慎使用。禁止在測試伺服器和生產伺服器使用! 否則由此造成的一切負面後果,Jerry本人及SAP概不負責。
2. 如果真的想確保自己交付的程式碼“ 永無BUG ”,程式設計師還是得老老實實練好自己的內功,而不要把自己的命運交給佛祖。畢竟國內這麼多程式設計師,這麼多行程式碼,要是每一位程式設計師每一行程式碼都要由佛祖開光,佛祖得多累鴨,佛祖忙不過來鴨!
更多閱讀
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/24475491/viewspace-2637985/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- ppt轉pdf怎麼轉?試試這個轉換技巧!
- 為什麼玩家不願意付費?試試這六種小技巧
- 面試中的這些坑,你踩過幾個?面試
- 邦芒面試:這10個問題都答不上來,你還想透過面試?面試
- SAP ABAP Development Tool 提高開發效率的十個小技巧dev
- 你可能也罵過這兩個面試題!面試題
- 6 個珍藏已久 IDEA 小技巧,這一波全部分享給你!Idea
- 玩家不願意付費?試試這六種小技巧
- 那個在家遠端面試的程式設計師工資漲一半,這些面試技巧你得知道面試程式設計師
- 給你一個web端專案你如何展開測試?Web
- 這30道Web前端面試題,一個小時內你能否答得出來?Web前端面試題
- 如何透過 ABAP 程式碼給 SAP OData 後設資料增添註解試讀版
- 這個小技巧你可能不知道。
- 小程式的這些坑你踩過嗎?
- 你需要知道的小程式開發技巧
- 架構師面試的幾個小技巧 - nickbulljs架構面試JS
- Reviewbot 開源 | 這些寫 Go 程式碼的小技巧,你都知道嗎?ViewGo
- 最火的小程式開發需要什麼知識,你造麼?抓緊看過來
- 關於Web前端面試的小技巧,千萬不要錯過!Web前端面試
- 一個 15 年 SAP ABAP 開發人員分享的 SAPGUI 一些個性化設定和實用小技巧試讀版GUI
- 送給寫小程式的你。
- 給你一個網站,你該如何測試?你需要記住這4條法則!網站
- 測試工程師看過來!面試,你真的會嗎?工程師面試
- 如何寫出優質乾淨的程式碼,這6個技巧你不能錯過!
- 你試過不用if擼程式碼嗎?
- 邦芒面試:為什麼你的面試沒回音?逃不過這8種情況面試
- 邦芒面試:11條面試提示將給你帶來成功的契機面試
- 面試時這麼問你Spring Boot,你能答對幾個?面試Spring Boot
- 你寫的前端程式碼有做過單元測試嗎?使用什麼工具?怎麼測試的?前端
- 六級考試小技巧
- 當面試遇到 Redis,我作為一個面試官是這麼“刁難”你的!面試Redis
- 啥?你的 Tap bar 不夠花裡胡哨,試試這個!
- 還在用 OpenFeign?來試試 SpringBoot3 中的這個新玩意!Spring Boot
- 分享幾個Java面試小技巧,建議收藏!Java面試
- 面試官問:“在專案中用過多執行緒嗎?”你就把這個案例講給他聽!面試執行緒
- 一些Java面試技巧分享,你不能錯過!Java面試
- 除了面試題,你應該知道的面試技巧!面試題
- 微信小程式測試過程中的各個要點(乾貨)微信小程式