最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

c# 代碼調(diào)試技巧和如何遠(yuǎn)程調(diào)試

 更新時(shí)間:2020年11月06日 08:35:30   作者:一線碼農(nóng)  
這篇文章主要介紹了c# 代碼調(diào)試技巧和如何遠(yuǎn)程調(diào)試,幫助大家更好的理解和使用c#編程語(yǔ)言,感興趣的朋友可以了解下

一:背景

1. 講故事

每次項(xiàng)目預(yù)交付的時(shí)候,總會(huì)遇到各種奇葩的坑,我覺(jué)得有必要梳理一下以及如何快速解決的,讓后來(lái)人避避坑,這篇就聊聊自己的所聞所遇:

我去,本地環(huán)境代碼跑的哧溜,上了測(cè)試環(huán)境出問(wèn)題
我去, 第三方提供的 dll 跑出 bug 了

二:兩個(gè)大坑的解決方案

1. 本地環(huán)境沒(méi)問(wèn)題,上了測(cè)試出問(wèn)題

相信很多朋友都有我這樣類似的遭遇,明明程序代碼,配置文件都一樣,挪了一個(gè)窩就出問(wèn)題,你說(shuō)氣人不,既然問(wèn)題出了那怎么快速解決呢? 對(duì),就是用調(diào)試,但程序部署在 centos 上,送一個(gè) visualstudio 上去也不現(xiàn)實(shí),在這種限制級(jí)條件下還想調(diào)試怎么辦呢?不錯(cuò),可以上遠(yuǎn)程調(diào)試,然后就很快查到了測(cè)試機(jī)器中的某一個(gè)環(huán)境變量搞錯(cuò)了,事情的來(lái)龍去脈搞清楚了,接下來(lái)就看看怎么實(shí)現(xiàn) local 到 centos 的 遠(yuǎn)程調(diào)試。

1) 測(cè)試代碼
為了方便演示,我就在 Action 中讀取 strategy 環(huán)境變量。

  public class HomeController : Controller
  {
    public IActionResult Index()
    {
      ViewBag.strategy = Environment.GetEnvironmentVariable("strategy");

      return View();
    }
  }

2) 安裝 SSH
要遠(yuǎn)程調(diào)試,需要在遠(yuǎn)端機(jī)安裝 SSH,因?yàn)楹竺娓郊舆M(jìn)程調(diào)試 就要借助 SSH 打通。

yum install openssh-server unzip curl

安裝完成后,就能看到 22 端口已啟動(dòng)

[root@localhost data]# netstat -tlnp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address      Foreign Address     State    PID/Program name  
tcp    0   0 0.0.0.0:22       0.0.0.0:*        LISTEN   1126/sshd      
tcp    0   0 127.0.0.1:631      0.0.0.0:*        LISTEN   3037/cupsd     
tcp    0   0 127.0.0.1:25      0.0.0.0:*        LISTEN   1739/master  
tcp6    0   0 :::22          :::*          LISTEN   1126/sshd      
tcp6    0   0 ::1:631         :::*          LISTEN   3037/cupsd     
tcp6    0   0 ::1:25         :::*          LISTEN   1739/master 

3) 程序的發(fā)布配置
發(fā)布配置上,第一個(gè)要確保是 debug 版本,第二個(gè)要確保是 可移植模式 (Portable), 如下圖:

4) 使用附加進(jìn)程調(diào)試
在菜單欄依次選擇:Debug -> Attach To Process,然后填寫(xiě) ssh 需要的各種信息,如下圖:

點(diǎn)擊 Connect 后,就能看到遠(yuǎn)端機(jī)器的 dotnet程序 進(jìn)程號(hào),選擇該進(jìn)程進(jìn)行附加,在 Select Code Type 中選擇 Nanaged (.NET Core for Unix)即可,如下圖:

5) 順利調(diào)試
在 瀏覽器中鍵入: http://192.168.142.130/Home/Index ,可以看到我的 C# 代碼被命中,也順利的拿到了遠(yuǎn)端機(jī)器的 環(huán)境變量,問(wèn)題也就迎刃而解。

2. 第三方 dll 出 bug 了

調(diào)試程序除了使用 F9 進(jìn)行調(diào)試,相信也有不少朋友知道斷點(diǎn)是可以編輯的,比如說(shuō):設(shè)置表達(dá)式斷點(diǎn),過(guò)濾器斷點(diǎn),命中次數(shù)斷點(diǎn),動(dòng)作斷點(diǎn),下如圖:

第一個(gè)問(wèn)題就來(lái)了,這些花式斷點(diǎn),你真的會(huì)用嗎?真的會(huì)經(jīng)常用嗎?

讓我來(lái)回答的話,不到萬(wàn)不得已我是不會(huì)用的,我更愿意在代碼中加入利于調(diào)試的測(cè)試語(yǔ)句,原因有三點(diǎn):

  • 更加靈活

這個(gè)顯而易見(jiàn),在面板中設(shè)置條件相比用純語(yǔ)句設(shè)置要麻煩得多,點(diǎn)來(lái)點(diǎn)去,而且還要條件疊加,復(fù)雜的很,我是不喜歡。

  • 功能強(qiáng)大

編輯面板上只有簡(jiǎn)單的并且關(guān)系,而且各個(gè)條件還是同級(jí)別的,無(wú)法做到各個(gè)條件的或者關(guān)系以及層級(jí)或者遞歸的包含關(guān)系,所以。。。沒(méi)辦法。。。

  • 更易于保存

這個(gè)就有意思了,在斷點(diǎn)上右鍵是彈出編輯面板,點(diǎn)擊左鍵是關(guān)閉斷點(diǎn),問(wèn)題就出在這里,經(jīng)常由于手賤,本想點(diǎn)右鍵結(jié)果點(diǎn)了左鍵 😨😨😨。。。。 好不容易設(shè)置好的條件沒(méi)了。。。真的沒(méi)了😭😭😭,從此以后,路轉(zhuǎn)黑。如下圖:

那這么說(shuō)斷點(diǎn)編輯真的沒(méi)用嗎? 我覺(jué)得只有在不能修改語(yǔ)句的調(diào)試場(chǎng)景下能夠大顯身手,比如我遇到的調(diào)試廠家封裝的dll,哈哈,既然說(shuō)到了斷點(diǎn),我就用 dnspy 演示幾個(gè)斷點(diǎn)給大家復(fù)習(xí)一下吧!

1) 測(cè)試代碼
為方便演示,用 for 循環(huán)案例是最好的。

    public static void Main(string[] args)
    {
      var sum = 0;

      for (int i = 0; i < 10000; i++)
      {
        sum += i;
      }

      Console.WriteLine($"sum={sum}");
    }

2) 我希望在 sum = 1035 的時(shí)候命中斷點(diǎn)
這個(gè)用條件表達(dá)式斷點(diǎn)就可以了,非常簡(jiǎn)單,如下所示:

3) 找到所有能夠被 1800 整除的數(shù),并且記錄下當(dāng)時(shí)的 i 和 sum 值
這里就可以用到 Action 斷點(diǎn)的日志記錄,在 for 循環(huán)迭代中,不需要中斷斷點(diǎn),只需記錄某一個(gè)特定狀態(tài)下當(dāng)前的 i 和 sum 的值,對(duì)調(diào)試代碼非常有幫助,如下圖:

三:總結(jié)
總的來(lái)說(shuō)這兩個(gè)經(jīng)驗(yàn)也算我一步一步踩坑過(guò)來(lái)的,如果能幫到你就更好了,本篇就聊這么多,下篇再見(jiàn)!

以上就是c# 代碼調(diào)試技巧和如何遠(yuǎn)程調(diào)試的詳細(xì)內(nèi)容,更多關(guān)于c# 代碼調(diào)試的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • Unity C#執(zhí)行bat腳本的操作

    Unity C#執(zhí)行bat腳本的操作

    這篇文章主要介紹了Unity C#執(zhí)行bat腳本的操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2021-04-04
  • c# 兩種發(fā)送郵件的方法

    c# 兩種發(fā)送郵件的方法

    這篇文章主要介紹了c# 兩種發(fā)送郵件的方法,幫助大家更好的理解和學(xué)習(xí)使用c#,感興趣的朋友可以了解下
    2021-04-04
  • C#中計(jì)數(shù)排序算法的原理及實(shí)現(xiàn)

    C#中計(jì)數(shù)排序算法的原理及實(shí)現(xiàn)

    計(jì)數(shù)排序是一種線性時(shí)間復(fù)雜度的排序方法,主要通過(guò)統(tǒng)計(jì)元素出現(xiàn)的次數(shù)實(shí)現(xiàn)排序,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2024-10-10
  • C#開(kāi)發(fā)之int與string轉(zhuǎn)化操作

    C#開(kāi)發(fā)之int與string轉(zhuǎn)化操作

    這篇文章主要介紹了C#開(kāi)發(fā)之int與string轉(zhuǎn)化操作,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧
    2020-12-12
  • 直接在線預(yù)覽Word、Excel、TXT文件之ASP.NET

    直接在線預(yù)覽Word、Excel、TXT文件之ASP.NET

    這篇文章主要用asp.net技術(shù)實(shí)現(xiàn)直接在線預(yù)覽word、excel、txt文件,有需要的朋友可以參考下
    2015-08-08
  • C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法

    C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法

    這篇文章主要介紹了C#實(shí)現(xiàn)簡(jiǎn)單合并word文檔的方法,涉及C#針對(duì)word文檔的讀取、插入、保存等技巧,非常具有實(shí)用價(jià)值,需要的朋友可以參考下
    2015-09-09
  • C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類介紹

    C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類介紹

    這篇文章介紹了C#中的WebRequest與WebResponse抽象類、DNS靜態(tài)類、Ping類,文中通過(guò)示例代碼介紹的非常詳細(xì)。對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2022-05-05
  • 詳解C#中多態(tài)性學(xué)習(xí)/虛方法/抽象方法和接口的用法

    詳解C#中多態(tài)性學(xué)習(xí)/虛方法/抽象方法和接口的用法

    這篇文章主要為大家詳細(xì)介紹了C#中多態(tài)性學(xué)習(xí)、虛方法、抽象方法和接口的用法的相關(guān)知識(shí),文中的示例代碼講解詳細(xì),感興趣的小伙伴可以了解一下
    2023-03-03
  • C#通過(guò)DataSet讀寫(xiě)xml文件的方法

    C#通過(guò)DataSet讀寫(xiě)xml文件的方法

    這篇文章主要介紹了C#通過(guò)DataSet讀寫(xiě)xml文件的方法,涉及C#使用DataSet操作XML的相關(guān)技巧,方法簡(jiǎn)單實(shí)用,需要的朋友可以參考下
    2015-05-05
  • 3種方法實(shí)現(xiàn)WindowsForm切換窗口

    3種方法實(shí)現(xiàn)WindowsForm切換窗口

    這篇文章主要介紹了3種方法實(shí)現(xiàn)WindowsForm切換窗口,文中講解非常詳細(xì),示例代碼幫助大家更好的理解和學(xué)習(xí),感興趣的朋友可以了解下
    2020-07-07

最新評(píng)論

宣化县| 大荔县| 井陉县| 莒南县| 惠安县| 涞源县| 黄石市| 雅安市| 定南县| 体育| 麻江县| 新田县| 饶阳县| 黔江区| 晋中市| 巴林左旗| 乃东县| 舞阳县| 张掖市| 望都县| 尼玛县| 宜君县| 鄂温| 信阳市| 安乡县| 福鼎市| 衡南县| 桃江县| 平山县| 湾仔区| 台东市| 温宿县| 吉木乃县| 景泰县| 镇原县| 青海省| 台山市| 香港| 阜宁县| 阜阳市| 瑞丽市|