Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/314.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如何调试使用p/invoke调用的本机代码_C#_Pinvoke_Clion_Rider - Fatal编程技术网

C# 如何调试使用p/invoke调用的本机代码

C# 如何调试使用p/invoke调用的本机代码,c#,pinvoke,clion,rider,C#,Pinvoke,Clion,Rider,我正在使用jetbrains公司的Rider和CLion(我喜欢他们的工具)。我有一个用C编写的应用程序,可以与用C(OpenSSL)编写的库进行互操作 我知道,在VisualStudio中,我可以勾选“调试本机代码”框并完成它(只要我有PDB),但我要让rider和clion一起玩得很好,这真是一段艰难的时光 下面是我如何连接两个调试器的方法: 从rider中启动应用程序,让它在我要调试的代码之前命中断点 在CLion中加载OpenSSL源代码 运行ps-ef | grep TLS查找托管进程

我正在使用jetbrains公司的RiderCLion(我喜欢他们的工具)。我有一个用C编写的应用程序,可以与用C(OpenSSL)编写的库进行互操作

我知道,在VisualStudio中,我可以勾选“调试本机代码”框并完成它(只要我有PDB),但我要让rider和clion一起玩得很好,这真是一段艰难的时光

下面是我如何连接两个调试器的方法:

  • 从rider中启动应用程序,让它在我要调试的代码之前命中断点
  • 在CLion中加载OpenSSL源代码
  • 运行
    ps-ef | grep TLS
    查找托管进程ID
  • 将CLion附加到该过程中
  • 在第4步之后,CLion强迫我逐步完成某个汇编程序,尽管我还没有设置断点,并使托管进程崩溃


    所以我想知道,如何使用Rider和CLion在同一个应用程序中调试托管代码和本机代码?

    通常一个进程只能连接一个调试器。挑一个。@DavidHeffernan啊,我明白了。。。这有点棘手,因为如果无法在某一点停止托管代码,我将永远无法及时附加c调试器…您可以修改代码以启用它。或者让您的C调试器启动主机进程但挂起。