まずはこちらで紹介されている3通りの方法を行ってください。
DLL 側のデバッグは、DLL のプロジェクトを Visual Studio で開き、C# の exe を起動して、このプロセスにアタッチして行います。
C# は exe を直接起動するのでアプリを待機させたい場合があるときは、止めたい場所のコードに MessageBox.Show() 等を入れて対処してください。Visual Studio は使えませんのでブレークポイントは仕掛けられません。
アンマネージドコードでブレークするには、もう1つ設定が必要です。
アタッチの際に、「アタッチ先」の右側の選択ボタンを押し、
・ネイティブコード
・マネージドコード
を2つチェックを入れてからアタッチします。
アタッチするとブレークポイントが赤丸になる事を確認してください。
赤丸にならない場合は何か間違えています。設定や手順を再確認してください。
最後に C# の exe がメッセージボックスを表示して待機しているので、OK ボタンを押してダイアログボックスを消せば、DLL 側のブレークポイントで止まります。これで、DLL(C++)内のマネージドコード内でもアンマネージドコード内でもブレークする事ができます。
グッド・ラック。