|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
[C#/VS2010] Come trovare i simboli
Carissimi
ho un'applicazione c# che scrive un crash dump in caso si verifichino condizioni "strane" che necessitano una adeguata sessione di debug. Una volta scritto il dump, l'esecuzione prosegue normalmente, cosicche' la produzione possa continuare e lo sviluppatore possa usare il dmp per fare le operazioni di debug e capire cos'e' andato storto su una macchina off-line. Non riesco a trovare i simboli. Ho sempre effettuato operazioni di questo genere con codice unmanaged e Visual Studio .NET e 2005, ma ora non riesco a vedere nulla con codice managed e VS2010 Ho provato anche con WinDbg e non va nulla lo stesso. Non si trovano i simboli Suggerimenti?
__________________
In God we trust; all others bring data |
|
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
NOTA - ho provato a scrivere una piccola applicazione di test e succede lo stesso. Qui il codice:
Codice:
namespace TestMiniDump
{
public class DebugHelpDll
{
[DllImport("dbghelp.dll")]
public static extern bool MiniDumpWriteDump(IntPtr hProcess, Int32 ProcessId, IntPtr hFile, int DumpType,
IntPtr ExceptionParam, IntPtr UserStreamParam, IntPtr CallStackParam);
}
class TestDump
{
static bool dumpForDebug(string filename)
{
FileStream fs = null;
Process proc = Process.GetCurrentProcess();
try
{
fs = new FileStream(filename, FileMode.Create);
bool res = DebugHelpDll.MiniDumpWriteDump(proc.Handle, proc.Id, fs.SafeFileHandle.DangerousGetHandle(), (int)MINIDUMP_TYPE.MiniDumpWithFullMemory, IntPtr.Zero, IntPtr.Zero, IntPtr.Zero);
fs.Close();
return res;
}
catch (Exception)
{
try
{
if (fs != null) fs.Close();
}
catch (Exception) { }
return false;
}
}
static void test1()
{
test2();
}
static void test2()
{
test3();
}
static void test3()
{
bool res = dumpForDebug("test1.dmp");
if (res)
Trace.WriteLine("DUMP OK");
else
Trace.WriteLine("ERROR DUMPING");
}
static void Main(string[] args)
{
Trace.WriteLine("Try creating a dump..\n");
test1();
}
}
}
Qualche idea? Devo creare un altro tipo di minidump? Eppure le dimensioni sono identiche (o quasi, non ho controllato fino al byte)...
__________________
In God we trust; all others bring data |
|
|
|
|
|
#3 |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
ciao,
se dalle opzioni del progetto -> Debug togli il flag "Enable the Visual Studio hosting process" dovrebbe funzionare. Marco |
|
|
|
|
|
#4 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Ma ha un senso il dump nativo di un applicativo managed?
Suppongo che tu abbia bisogno dei pdb del framework .Net per vedere qualche informazione. |
|
|
|
|
|
#5 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
Si, ha senso purche' sia fatto il dump "MiniDumpWithFullMemory". Si deve usare SOS, mette a disposizione dei comandi per i programmi managed. @giangian2: ci provo subito. Suona un po' strano ma da quando uso VS2010 mi sono abituato alle stranezze
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#6 | ||
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
Quote:
Quote:
|
||
|
|
|
|
|
#7 | |
|
Senior Member
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
|
Quote:
E' un ottimo risultato. Vorrei cmq riuscire anche ad aprirlo sotto windbg... hai qualche idea? Grazie mille
__________________
In God we trust; all others bring data |
|
|
|
|
|
|
#8 |
|
Member
Iscritto dal: Dec 2005
Città: Provincia di Vicenza
Messaggi: 174
|
|
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 17:44.




















