7

OS XでASP.NET Coreを使用してWeb APIを設定しようとしています。私の環境を正しく設定しました。私のアプリケーションは、dotnet buildをターミナルから使用しており、私は期待どおりに動作するブレークポイントを持つVisual Studio Codeからデバッグを開始することができます。私の問題は、EFコアを使用して自分のSqliteデータベースを照会しようとするとエラーが発生することです。 EFコアはここではあまり重要ではありません。なぜなら、デバッグしているときにエラーの内容を調べようとすると、スタックトレースが発生しないからです。Visual StudioコードがOS Xでシンボルを読み込まない

Exception thrown: 'System.InvalidOperationException' in Microsoft.EntityFrameworkCore.dll 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Diagnostics.StackTrace.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.Reflection.Metadata.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.MemoryMappedFiles.dll'. Cannot find or open the symbol file. 
Loaded '/usr/local/share/dotnet/shared/Microsoft.NETCore.App/1.0.0/System.IO.UnmanagedMemoryStream.dll'. Cannot find or open the symbol file. 

これらCannot find or open the symbol file.の多くも同様に、起動時に印刷されています。私は失敗し、コードの上にデバッグコンソールのプリントをステップするとき。私はファイルが指定された場所にあることを確認しました。読み取りアクセスの問題はありません(sudo code .でコードを開始し、問題のフォルダ内でsudo chmod 777 *を実行したこともあります)。

シンボルがロードされない理由は何ですか?

+0

Visual Studioコードや.NET Coreを正しくインストールしなかったようです。あなたは、インストールに使用した手順を説明するために投稿を編集できますか?あなたはchmodをまったくやる必要はないはずです。 (私はOSX上でVSCodeを楽しんでいます。) – JasCav

+0

ここで説明するような自作ソフトを使った標準インストール:https://www.microsoft.com/net/core#macos。標準インストーラを使用してインストールされたVSコード。 sudoとchmodは暗闇の中でただのショットだったので、私はpdbファイルの場所が実行中のプロセスやそのようなものによって到達不能であると仮定しました。 – Erik

+0

私は同じ指示(OSX)に従っており、まったく同じ問題を抱えています。 –

答えて

0

あなたは、VSCodeが読み込めないと言っていることを混乱させると思います。 DLLをロードできないということではありません。 'シンボル'ファイルの拡張子は.PDBです。 DLLによって生成されたエラーをデバッグするには、デバッガに対応するシンボルファイルが必要です。そのため、DLLのアクセス権を変更してもPDBファイルが存在しない場合、エラーは消えません。

MacでVSCodeを使い始めたばかりですが、私が見ることのできるところでは、Homebrewでdotnet coreをインストールするとPDBファイルが得られません。デバッガを起動します。それは私のDLLで生成されたPDBファイルがあるので私自身のコードのデバッグから私を停止しません。それは、ドットネットコア自体の中で何かが間違っていることをデバッグする必要がある場合にのみ、問題を引き起こすでしょう。

+0

同じシナリオですが、VSCodeはまだインストールされているパッケージのコードを調べることができません。たとえば、次のようになります。ナンシー、EFなど私は自分のコードを見ることができ、スタックトレース内の他のすべてのステートメントは "名前なし"です。すべての手がかりは? –

+0

私は混乱しているとは思わない:)もしdllがロードされていなければ、プロセスはクラッシュし、速く燃えるだろう。私はデバッグ、ブレークポイントを設定し、私が質問に記載されているコードをステップ実行することができます。出力ウィンドウがスタックトレースを出力すると仮定すると、必要なシンボルを見つけることができません。 – Erik

+0

@エリック私は同じ問題を抱えています。あなたの解決策は何でしたか?他のインストール方法でシンボルをインストールしますか? –

4

Windows 10 VM上でVSコードを実行するのと同じ問題に陥る。

私が見つけた解決策は、project.jsonファイルのbuildOptionsセクションに"debugType": "portable"の設定を追加することでした。

鉱山は、次のようになります。VSコードで

"buildOptions": { 
    "emitEntryPoint": true, 
    "preserveCompilationContext": true, 
    "debugType": "portable" 
} 

デバッグが実際にその悪いわけではありません。

+0

ねえ、うまくいった!そして、あなたが正しいです、それはまったく悪いデバッガーではありません。 – joshmcode

+0

これは、OSXとLinuxのデフォルトでは、次のようになっているようです。https://docs.microsoft.com/nb-no/dotnet/articles/core/tutorials/using-on-macos – Erik

+5

1.1。それでも同じ問題。 –

関連する問題