精品欧美一区二区三区在线观看 _久久久久国色av免费观看性色_国产精品久久在线观看_亚洲第一综合网站_91精品又粗又猛又爽_小泽玛利亚一区二区免费_91亚洲精品国偷拍自产在线观看 _久久精品视频在线播放_美女精品久久久_欧美日韩国产成人在线

如何用WinDbg調(diào)試Linux上的.NET程序

系統(tǒng) Linux
最新版本 1.2402.24001.0 的WinDbg真的讓人很興奮,可以將自己偽裝成 GDB 來和遠(yuǎn)程的 GDBServer 打通來實現(xiàn)對 Linux 上 .NET程序進(jìn)行調(diào)試,這樣就可以繼續(xù)使用熟悉的WinDbg 命令,在這個版本中我覺得 WinDbg 不再是 WinDbg,而是 XDbg 了。

一、背景

1. 講故事

最新版本 1.2402.24001.0 的WinDbg真的讓人很興奮,可以將自己偽裝成 GDB 來和遠(yuǎn)程的 GDBServer 打通來實現(xiàn)對 Linux 上 .NET程序進(jìn)行調(diào)試,這樣就可以繼續(xù)使用熟悉的WinDbg 命令,在這個版本中我覺得 WinDbg 不再是 WinDbg,而是 XDbg 了,畫個簡圖如下:

圖片圖片

簡圖有了,接下來就要付出實踐了。

二、實操 Linux 上 .NET調(diào)試

1. 測試程序

本想在 CentOS7 上安裝 .NET8,不大好裝,這里就用一個現(xiàn)存的 .NETCore 3.1 吧,測試代碼如下:

internal class Program
    {
        static void Main(string[] args)
        {
            while (true)
            {
                Console.WriteLine($"{DateTime.Now},tid={Thread.CurrentThread.ManagedThreadId}");
                Thread.Sleep(1000);
            }
        }
    }

代碼非常簡單,就是1s輸出一條記錄,接下來編譯成x64部署到 Centos7 上。

[root@localhost data]# ls
ConsoleApp7  ConsoleApp7.deps.json  ConsoleApp7.dll  ConsoleApp7.pdb  ConsoleApp7.runtimeconfig.json

2. 安裝GDBServer

在 linux 上安裝 gdbserver 比較簡單,使用 yum 安裝即可 yum install gdb-gdbserver ,輸出如下:

[root@localhost data]# yum install gdb-gdbserver
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
 * base: mirror-hk.koddos.net
 * centos-sclo-rh: ftp.sjtu.edu.cn
 * centos-sclo-sclo: ftp.sjtu.edu.cn
 * epel: mirror.hoster.kz
 * extras: ftp.sjtu.edu.cn
 * updates: mirror-hk.koddos.net
Package gdb-gdbserver-7.6.1-120.el7.x86_64 already installed and latest version
Nothing to do
[root@localhost data]# gdbserver –version
Usage: gdbserver [OPTIONS] COMM PROG [ARGS ...]
 gdbserver [OPTIONS] --attach COMM PID
 gdbserver [OPTIONS] --multi COMM

COMM may either be a tty device (for serial debugging), or 
HOST:PORT to listen for a TCP connection.

Options:
  --debug               Enable general debugging output.
  --remote-debug        Enable remote protocol debugging output.
  --version             Display version information and exit.
  --wrapper WRAPPER --  Run WRAPPER to start new programs.
  --once                Exit after the first connection has closed.

安裝好之后,接下來用 gdbserver 來啟動我們的程序,并啟動調(diào)試端口為 1234,參考如下:

[root@localhost data]# gdbserver 192.168.128.130:1234 dotnet ConsoleApp7.dll
Process dotnet created; pid = 3643
Listening on port 1234

3. 使用 windbg 連接

打開Windbg后,選擇 Connect to remote debugger 選項, 在連接字符串中填入 gdb:server=192.168.128.130,port=1234 即可,截圖如下:

圖片圖片

連接好之后,會有一個初始中斷,直接輸入g就好了,輸出如下:

64-bit machine not using 64-bit API

************* Path validation summary **************
Response                         Time (ms)     Location
Deferred                                       SRV*C:\mysymbols*https://msdl.microsoft.com/download/symbols
Symbol search path is: SRV*C:\mysymbols*https://msdl.microsoft.com/download/symbols
Executable search path is: 
Unknown System Version 0 UP Free x64
System Uptime: not available
Process Uptime: not available
Reloading current modules
ModLoad: 00005555`55554000 00005555`555770cd   /usr/share/dotnet/dotnet
ModLoad: 00007fff`f7bbf000 00007fff`f7dda488   /lib64/libpthread.so.0
ModLoad: 00007fff`f79bb000 00007fff`f7bbe130   /lib64/libdl.so.2
ModLoad: 00007fff`f76b3000 00007fff`f79ba420   /lib64/libstdc++.so.6
ModLoad: 00007fff`f73b1000 00007fff`f76b2138   /lib64/libm.so.6
ModLoad: 00007fff`f719b000 00007fff`f73b0400   /lib64/libgcc_s.so.1
ModLoad: 00007fff`f6dcd000 00007fff`f719a200   /lib64/libc.so.6
ModLoad: 00007fff`f7ddb000 00007fff`f7ffe150   /lib64/ld-linux-x86-64.so.2
ModLoad: 00007fff`f7f72000 00007fff`f7fda288   /usr/share/dotnet/host/fxr/6.0.26/libhostfxr.so
ModLoad: 00007fff`f6b7c000 00007fff`f6dcc3b0   /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/libhostpolicy.so
ModLoad: 00007fff`f63e7000 00007fff`f6b7bac8   /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/libcoreclr.so
ModLoad: 00007fff`f61df000 00007fff`f63e6c38   /lib64/librt.so.1
ModLoad: 00007fff`f57d2000 00007fff`f59dd8c0   /lib64/libnuma.so.1
ModLoad: 00007fff`f3142000 00007fff`f3413dac   /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/libclrjit.so
ModLoad: 00007fff`f2f31000 00007fff`f3141468   /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/System.Native.so
ModLoad: 00007fff`f2d26000 00007fff`f2f30488   /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/System.Globalization.Native.so
ModLoad: 00007fff`f29ad000 00007fff`f2d25fe0   /lib64/libicuuc.so.50
ModLoad: 00007fff`f13da000 00007fff`f29ac030   /lib64/libicudata.so.50
ModLoad: 00007fff`f0fdb000 00007fff`f13d9340   /lib64/libicui18n.so.50
...................
ReadVirtual() failed in GetXStateConfiguration() first read attempt (error == 0.)
Unable to load image /lib64/libpthread.so.0, Win32 error 0n2
*** WARNING: Unable to verify timestamp for /lib64/libpthread.so.0
Unable to load image /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/libcoreclr.so, Win32 error 0n2
*** WARNING: Unable to verify timestamp for /usr/share/dotnet/shared/Microsoft.NETCore.App/3.1.32/libcoreclr.so
libpthread_so!_pthread_cond_timedwait+0x132:
00007fff`f7bcade2 4989c6          mov     r14,rax
0:000> g

有些人可能會好奇,為什么 WinDbg 能偽裝成 GDB 來和 GDBServer 來通訊,這其實得益于 WinDbg 是一個宿主,它可以被很多外來的插件無線擴(kuò)容自己的功能,這和 Linux 的分而治之恰恰相反。。。

接下來可以用 .chain 命令觀察插件列表,其中的 GDBServerComposition 和 ELFBinComposition 讓這項功能得到實現(xiàn)。

0:000> .chain
Extension DLL chain:
    GDBServerComposition: image 10.0.27553.1004, API 0.0.0, 
        [path: C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2402.24001.0_x64__8wekyb3d8bbwe\amd64\winext\GDBServerComposition.dll]
    ELFBinComposition: image 10.0.27553.1004, API 0.0.0, 
        [path: C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2402.24001.0_x64__8wekyb3d8bbwe\amd64\winext\ELFBinComposition.dll]
    dbghelp: image 10.0.27553.1004, API 10.0.6, 
        [path: C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2402.24001.0_x64__8wekyb3d8bbwe\amd64\dbghelp.dll]
    uext: image 10.0.27553.1004, API 1.0.0, 
        [path: C:\Program Files\WindowsApps\Microsoft.WinDbg_1.2402.24001.0_x64__8wekyb3d8bbwe\amd64\winext\uext.dll]

接下來就可以做驗證了,研究 coreclr 源碼,你會發(fā)現(xiàn)在 Linux 上 .NET 的 Sleep 函數(shù)是借助于底層的 pthread_cond_timedwait 函數(shù),Linux并沒有提供類似Windows 的SleepEx這樣的系統(tǒng)調(diào)用,這就比較坑了,參考如下:

PAL_ERROR CPalSynchronizationManager::ThreadNativeWait(
    ThreadNativeWaitData* ptnwdNativeWaitData,
    DWORD dwTimeout,
    ThreadWakeupReason* ptwrWakeupReason,
    DWORD* pdwSignaledObject)
{
 //...
    while (FALSE == ptnwdNativeWaitData->iPred)
    {
        if (INFINITE == dwTimeout)
        {
            iWaitRet = pthread_cond_wait(&ptnwdNativeWaitData->cond,
                &ptnwdNativeWaitData->mutex);
        }
        else
        {
            iWaitRet = pthread_cond_timedwait(&ptnwdNativeWaitData->cond,
                &ptnwdNativeWaitData->mutex,
                &tsAbsTmo);
        }
    }
 //...
}

圖片圖片

不管怎么說,我們用 WinDbg 調(diào)試 Linux 的 .NET 程序算是大功告成了。

三、總結(jié)

現(xiàn)在的 WinDbg 早已今非昔比,全平臺(MacOs,Linux,Windows) 通吃,這也得益于 Windbg 是一個宿主模式的架構(gòu)體系,給 WinDbg 點贊!

責(zé)任編輯:武曉燕 來源: 一線碼農(nóng)聊技術(shù)
相關(guān)推薦

2025-05-08 03:33:00

Linuxperf.NET

2018-12-10 09:00:00

Linux加密分區(qū)dm-crypt

2010-03-23 16:17:09

Linux bash程

2017-02-06 18:42:37

Linuxgdb程序

2019-08-13 15:39:27

Linux應(yīng)用程序

2018-03-28 08:30:01

Linux倉庫應(yīng)用程序

2019-09-29 09:40:20

LinuxWindowsMacOS

2011-07-26 14:44:53

調(diào)試 Xcode

2024-01-03 16:28:46

WinDbg命令調(diào)試

2011-07-22 13:22:10

Java.NETDataTable

2014-08-15 13:34:06

Linux

2012-05-24 09:47:26

ibmdw

2012-05-28 16:20:44

Linux

2016-02-16 09:36:37

CrossOverLinuxWindows

2016-08-02 10:34:17

LinuxWindows雙啟動

2021-05-17 07:45:06

Linux系統(tǒng)程序

2019-06-18 07:15:22

Linux拼寫look命令

2025-03-05 00:49:00

Win32源碼malloc

2020-06-23 09:48:09

Python開發(fā)內(nèi)存

2009-08-20 16:07:39

C#和ADO.NET訪
點贊
收藏

51CTO技術(shù)棧公眾號

福利一区视频| 国产二区在线播放| 亚洲影音一区| 亚洲四色影视在线观看| 亚洲性图一区二区| 污片视频在线免费观看| 97成人超碰视| 成人黄色免费看| 国产无码精品在线观看| 国产一区二区三区91| 911国产精品| 337p粉嫩大胆噜噜噜鲁| av电影在线播放高清免费观看| 精品无码三级在线观看视频| 性欧美长视频免费观看不卡| 日韩中文字幕有码| 成人免费在线电影网| 91国偷自产一区二区三区成为亚洲经典| 亚洲一区二区在线看| 手机在线观看毛片| 狠狠色狠狠色综合| 国产a∨精品一区二区三区不卡| 五月天激情丁香| 亚州精品视频| 精品精品国产高清一毛片一天堂| 男人的天堂日韩| 97蜜桃久久| 亚洲欧美韩国综合色| 日韩精品在在线一区二区中文| 超碰在线人人干| 精品一区二区在线观看| 亲子乱一区二区三区电影| 免费一级a毛片夜夜看| 99国内精品久久久久久久| 亚洲免费影视第一页| 黑人玩弄人妻一区二区三区| 95精品视频| 欧美图区在线视频| 人妻无码视频一区二区三区| 国产99在线观看| 亚洲卡通动漫在线| 中文字幕欧美日韩一区二区| 成人福利在线| 97se亚洲国产综合自在线| 国产精品久久久久免费| 精品人妻无码一区二区色欲产成人 | 能在线观看的av| 色呦呦在线播放| 亚洲三级理论片| 杨幂一区欧美专区| h视频网站在线观看| 久久九九全国免费| 日本一区二区精品视频| 免费人成在线观看网站| 久久综合丝袜日本网| 六十路精品视频| 亚州av在线播放| 26uuu欧美| 欧美激情视频一区二区三区| 天堂在线中文字幕| 91在线精品一区二区三区| 久久精品日产第一区二区三区乱码| 欧美视频一二区| 99精品国产一区二区三区不卡| 成人av资源网| 十八禁一区二区三区| wwwwww.欧美系列| 欧美污视频久久久| www亚洲人| 亚洲少妇30p| 国产一区二区三区在线免费| 91福利在线尤物| 欧美日韩国产中字| 性欧美极品xxxx欧美一区二区| 日韩毛片一区| 制服视频三区第一页精品| 日本一本在线视频| 国产精品主播在线观看| 亚洲美女黄色片| 99久久精品免费视频| 久久精品99久久无色码中文字幕| 日韩一二三在线视频播| 印度午夜性春猛xxx交| 亚洲国产午夜| 国产精品久久色| 国产女人18毛片水18精| av影院午夜一区| 色播亚洲婷婷| 中文国产字幕在线观看| 欧美日韩一区二区精品| av中文字幕网址| 久久资源综合| 丝袜一区二区三区| 精品处破女学生| 日本成人在线一区| 99国精产品一二二线| 日韩福利一区二区| 亚洲欧美国产三级| 日韩激情免费视频| 国产日本亚洲| 亚洲小视频在线观看| 中文字幕亚洲欧美日韩| 美女被久久久| a级国产乱理论片在线观看99| 视频一区二区免费| 亚洲婷婷国产精品电影人久久| 精品久久久久久无码中文野结衣| 国内自拍亚洲| 日韩av在线一区二区| 成年人免费视频播放| 亚洲欧美日本国产专区一区| 成人信息集中地欧美| 激情在线视频| 亚洲高清在线视频| 久久久久久久久久久久久久久国产| 欧美一级色片| 欧美理论片在线观看| 最近国语视频在线观看免费播放| 成人免费三级在线| 艳母动漫在线免费观看| 人人鲁人人莫人人爱精品| 精品三级在线看| 小泽玛利亚一区| 青青草国产成人av片免费| 国产在线精品一区二区三区| av色综合久久天堂av色综合在| 91福利在线导航| 黄色网址在线视频| 欧美va天堂在线| 成人精品一区二区三区电影黑人| 免费在线超碰| 欧美日韩一区二区三区在线免费观看| 亚洲AV无码久久精品国产一区| 久久人人99| 国产精品久久久久久影视| 四虎精品成人影院观看地址| 亚洲午夜视频在线观看| 69久久精品无码一区二区 | 中文字幕亚洲一区| 免费污污视频在线观看| 成人精品小蝌蚪| 国产激情在线看| 国产精品日本一区二区不卡视频| 伊人伊成久久人综合网小说| 亚洲成人av影片| 久久精品一区二区三区四区| 国产91对白刺激露脸在线观看| 日韩在线黄色| 7m精品福利视频导航| 午夜在线视频免费| 激情av一区二区| 在线观看av中文字幕| 亚洲一区二区免费看| 蜜桃免费一区二区三区| 在线天堂资源www在线污| 日韩av在线网| 国产视频1区2区| 国产蜜臀av在线一区二区三区| 国产一级片黄色| 大色综合视频网站在线播放| 国产在线拍揄自揄视频不卡99| eeuss影院www在线播放| 欧美日韩成人综合| 内射一区二区三区| 国产成人在线色| 成年女人18级毛片毛片免费| 亚洲免费福利一区| 国产精品成人观看视频国产奇米| 超碰在线国产| 91精品国产一区二区三区蜜臀| 亚洲国产美女视频| 丁香六月久久综合狠狠色| 欧美视频免费看欧美视频| 亚洲国产网址| 成人a在线视频| 欧美卡一卡二| 亚洲精品自在久久| 怡红院男人的天堂| 亚洲一区二区三区视频在线| 日本黄色录像片| 免费成人美女在线观看.| 粉嫩av一区二区三区天美传媒| 国产伦乱精品| 国产精品日韩在线播放| av免费在线观看网站| 亚洲国产精品电影| 色婷婷久久综合中文久久蜜桃av| 亚洲天天做日日做天天谢日日欢 | 欧美女王vk| 亚洲一区二区三区在线免费观看 | 一本到12不卡视频在线dvd| 国产区日韩欧美| 成人在线高清| 久久免费精品日本久久中文字幕| 国产在线你懂得| 日韩你懂的在线播放| 波多野结衣理论片| 亚洲一区二区三区国产| 亚洲图片另类小说| 国产成人精品一区二区三区四区 | 亚洲一区av| 91成人精品网站| 国产精品久久麻豆| 亚洲欧美激情视频| 亚洲国产中文字幕在线| 在线精品亚洲一区二区不卡| 国产亚洲精品码| 国产精品久线在线观看| 亚洲男人在线天堂| 久久 天天综合| 欧美成人免费高清视频| 狠狠入ady亚洲精品| 亚洲春色在线| 久久av影视| 国产成人精品自拍| 99re8精品视频在线观看| 国产suv精品一区二区三区88区| 精品一性一色一乱农村| 久久国产一区二区三区| 免费在线黄色电影| 亚洲福利在线播放| 午夜精品久久久久久久爽| 欧美日韩免费一区二区三区 | 欧美xxxx黑人又粗又长密月| 日韩精品一区二区三区中文 | 精品深夜福利视频| 亚洲一区二区三区四区视频| 久久爱.com| 国产精品国内视频| 亚洲欧美电影| 69av成年福利视频| caoprom在线| 久久噜噜噜精品国产亚洲综合| 91网在线看| 久久精品国产69国产精品亚洲| 国产理论电影在线观看| 亚洲毛片在线免费观看| 日本a一级在线免费播放| 亚洲国产日韩欧美在线图片| 好吊视频一二三区| 欧美成人一级视频| 午夜精品久久久久久久91蜜桃| 欧美日韩免费高清一区色橹橹| 欧美在线视频精品| 欧美又粗又大又爽| 在线免费一区二区| 欧美三级电影在线看| 日本成人一级片| 欧美三级日韩三级| 国产又粗又黄又爽| 欧美一区二区视频在线观看2022| 一级淫片免费看| 日韩一区二区在线观看视频播放| 国产乱码精品一区二三区蜜臂 | 亚洲啪av永久无码精品放毛片 | 国产精品久久久久久人| 欧美性猛交xxxx| 中文字幕一区二区三区四区欧美| 色av综合在线| 在线免费av网| 日韩精品中文字幕一区二区三区 | 亚洲网一区二区三区| 国产欧美日韩综合一区在线观看 | 日韩一区二区欧美| 成人在线播放| 欧美激情亚洲激情| 中文字幕高清在线播放| 国产精品久久久久久亚洲调教| 亚洲精品成人一区| 不卡视频一区二区| 欧美巨大xxxx| 日韩av在线电影观看| 99久久影视| 日韩精品一区在线视频| 嫩草成人www欧美| av亚洲天堂网| 成人性色生活片免费看爆迷你毛片| 天天插天天射天天干| 中文字幕高清一区| 欧美三级 欧美一级| 精品久久久久久中文字幕一区奶水 | 国产av一区二区三区传媒| 99久久er热在这里只有精品15| 亚洲精品91在线| 一区二区在线观看视频在线观看| av大片免费在线观看| 欧美性受极品xxxx喷水| www精品国产| 亚洲男人天堂2024| www在线观看播放免费视频日本| 91精品国产免费久久久久久| 国产精品无码久久久久| 精品国产乱码久久久久久丨区2区| 国产一区二区欧美| 2018中文字幕第一页| 日韩高清一区在线| 天天躁日日躁狠狠躁av| 中文字幕乱码亚洲精品一区| 国产在线综合网| 欧美日韩一区二区三区视频| 少妇av一区二区| 久久久国产精品x99av| 成人欧美magnet| 2019国产精品视频| av在线不卡顿| 国产乱子伦农村叉叉叉| 国产精品一区二区免费不卡 | 五月开心六月丁香综合色啪| 日韩国产欧美亚洲| 国产在线精品免费| 亚洲av成人无码久久精品| 亚洲成人av在线电影| 国产一区二区三区三州| 亚洲欧美日韩精品久久奇米色影视| 成视频免费观看在线看| 国产精品永久免费观看| 台湾色综合娱乐中文网| 精品久久久久久无码中文野结衣| 久久成人羞羞网站| 国产美女免费网站| 黑人极品videos精品欧美裸| 亚洲美女综合网| 欧美精品免费在线| 小明成人免费视频一区| 欧洲精品一区色| 国产日韩欧美| 国产高清成人久久| 亚洲夂夂婷婷色拍ww47| 国产绿帽一区二区三区| 日韩一级黄色av| 日韩免费在线电影| 亚洲v欧美v另类v综合v日韩v| 亚洲自啪免费| 国产人妻人伦精品1国产丝袜| 亚洲国产精品天堂| 丰满人妻一区二区| 久久久久久久久久久av| 亚洲欧美日本国产| 福利在线一区二区| 国产成人午夜视频| 久久久久人妻一区精品色欧美| 91精品国产福利| 成人免费网站在线观看视频| 91麻豆桃色免费看| 香蕉精品视频在线观看| 欧美成人乱码一二三四区免费| 国产精品网站一区| 亚洲一级特黄毛片| 日韩一区二区福利| 日韩免费精品| 日本大片免费看| av福利精品导航| 日本三级小视频| 亚洲人线精品午夜| 欧美色片在线观看| 亚洲精品欧洲精品| 黄色小说综合网站| www.99re7| 亚洲高清福利视频| 色尼玛亚洲综合影院| 天堂va久久久噜噜噜久久va| 久久激情综合网| 538任你躁在线精品视频网站| 亚洲精品一区二区三区四区高清| 国产不卡人人| 性欧美精品一区二区三区在线播放| 蜜臀av亚洲一区中文字幕| fc2ppv在线播放| 欧美tickling网站挠脚心| 国产色播av在线| 日本一区免费看| 极品尤物av久久免费看| 国产精品9191| 国产一区二区三区18| 亚洲视频资源| 黄色免费视频大全| 国产精品少妇自拍| 国产黄色片av| 琪琪亚洲精品午夜在线| 99久久.com| 亚洲男女在线观看| 欧美在线你懂的| 婷婷丁香在线| 日本一区二区免费看| 国产精品自拍网站| 天天操天天操天天操天天| 色青青草原桃花久久综合| 北条麻妃在线一区二区免费播放| 日韩欧美精品在线观看视频| 中文字幕一区二区三区不卡在线 | 日本天堂网在线| 精品国偷自产在线视频99| 狠狠久久伊人| 色婷婷一区二区三区av免费看| 性做久久久久久| 日本成人网址| 欧美精品一区二区三区久久| 国产一区二区三区免费在线观看| 三级黄色在线视频| 久久久电影免费观看完整版|