{"id":24485,"date":"2023-05-09T12:25:21","date_gmt":"2023-05-09T10:25:21","guid":{"rendered":"http:\/\/help.qualiware.it\/qw-help\/?p=24485"},"modified":"2023-05-09T12:29:55","modified_gmt":"2023-05-09T10:29:55","slug":"fd-debug","status":"publish","type":"post","link":"https:\/\/help.qualiware.it\/qw-help\/fd-debug\/","title":{"rendered":"Debug di un form o di uno script con Visual Studio"},"content":{"rendered":"<p dir=\"LTR\" align=\"LEFT\">In questa pagina vedremo&nbsp;come sia possibile effettuare il debug dei form sviluppati su piattaforma web e mobile, e degli script inseriti in QualiWare Server Daemon e nei workflow, utilizzando <a href=\"https:\/\/visualstudio.microsoft.com\/it\/vs\/community\/\" target=\"_blank\" rel=\"noopener\"><strong>Visual Studio Community Edition<\/strong><\/a>, disponibile gratuitamente.<\/p>\n<p dir=\"LTR\" align=\"LEFT\"><strong>1. Prerequisiti<\/strong><\/p>\n<ul>\n<li>Visual Studio Community Edition con, installate, le funzionalit\u00e0 per lo sviluppo di applicazioni web ASP.NET;<\/li>\n<li><a href=\"https:\/\/visualstudio.microsoft.com\/it\/downloads\/\" target=\"_blank\" rel=\"noopener\"><strong>Remote Debugger Tools<\/strong><\/a>(*);<\/li>\n<li>Un <b>utente amministrativo <\/b>con accesso alla cartella &#8220;TEMP&#8221; del server dove \u00e8 installato QualiWare Web Server (generalmente &#8220;C:\\program files (x86)\\qualiware web server\\temp&#8221;).<\/li>\n<\/ul>\n<p>(*) i Remote Debugger Tools vanno installati e abilitati solo se Visual Studio non \u00e8 installato sulla stessa macchina dove \u00e8 installato QualiWare Web Server.&nbsp;<\/p>\n<p><strong>2. Individuazione della DLL e del file dei simboli corrispondenti ad un form<\/strong><\/p>\n<p dir=\"LTR\" align=\"LEFT\">Prima di tutto \u00e8 necessario comprendere come QualiWare gestisce il codice Visual Basic contenuto nei form. E&#8217; noto che un form realizzato con il form designer consiste in un file denominato <b>form.xml <\/b>contenuto nella cartella principale della categoria documentale. Al momento dell&#8217;apertura del form da parte dell&#8217;utente, attraverso il tasto &#8220;Modifica dati&#8221; per le categorie di tipo &#8220;Documento&#8221;, e &#8220;Scrivi&#8221; per le categorie di tipo &#8220;form&#8221;, il sistema genera, sempre nella cartella principale della categoria, un file denominato <strong>&lt;codice categoria&gt;_form_module.vb<\/strong>, che contiene il codice Visual Basic degli eventi. Tale file viene copiato nella cartella TEMP sul server dove \u00e8 installato QualiWare Web Server, e compilato(*). L\u2019output della compilazione, consistente in un file <strong>DLL<\/strong> e nel file dei simboli con estensione <strong>PDB<\/strong>, \u00e8 contenuto sempre nella cartella TEMP.<\/p>\n<p dir=\"LTR\" align=\"LEFT\">I nomi attribuiti ai 3 files VB, DLL e PDB contengono l\u2019indicazione del codice della categoria, come si pu\u00f2 vedere nell\u2019esempio qui di seguito, dove il codice della categoria \u00e8 &#8220;ZZZTG&#8221;.<\/p>\n<p dir=\"LTR\" align=\"LEFT\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24497\" src=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformpdbdll.png\" alt=\"\" width=\"842\" height=\"75\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformpdbdll.png 842w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformpdbdll-300x27.png 300w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformpdbdll-768x68.png 768w\" sizes=\"(max-width: 842px) 100vw, 842px\" \/><\/p>\n<p dir=\"LTR\" align=\"LEFT\">(*) la compilazione avviene solo nel caso in cui il file VB venga rigenerato, e ci\u00f2 avviene alla prima esecuzione del form dopo la modifica dello stesso&nbsp;utilizzando QualiWare Form Designer.&nbsp;<\/p>\n<p dir=\"LTR\" align=\"LEFT\"><strong>4. Individuazione della DLL e del file dei simboli corrispondenti ad uno script<\/strong><\/p>\n<p dir=\"LTR\" align=\"LEFT\">QualiWare consente di utilizzare script VB.NET in QualiWare Server Daemon e nel BPM Workflow Designer. Tali script vengono compilati al momento dell&#8217;esecuzione e il corrispondente sorgente si trova sempre nella cartella TEMP sul server dove \u00e8 installato QualiWare Web Server, e ha un nome che inizia con &#8220;CodeBlock&#8221; seguito da un numero casuale di 8 cifre.&nbsp;Il compilatore generer\u00e0 anche in questo caso un file DLL e un file PDB contenente i simboli.<\/p>\n<p dir=\"LTR\" align=\"LEFT\"><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24732\" src=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/CODEBLOCK_DEBUG.png\" alt=\"\" width=\"860\" height=\"121\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/CODEBLOCK_DEBUG.png 860w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/CODEBLOCK_DEBUG-300x42.png 300w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/CODEBLOCK_DEBUG-768x108.png 768w\" sizes=\"(max-width: 860px) 100vw, 860px\" \/><\/p>\n<p>NOTA: nel caso non sia possibile utilizzare Visual Studio, \u00e8 possibile utilizzare l&#8217;accorgimento descritto <a href=\"http:\/\/help.qualiware.it\/qw-help\/debug-di-uno-script-in-qualiware-server-daemon\/\">qui<\/a> per facilitare il debug degli script.<\/p>\n<p><strong>5. Connessione al processo in esecuzione<\/strong><\/p>\n<p>Per effettuare il debug \u00e8 necessario connettersi al processo in esecuzione lato server. Procedere quindi come segue:<\/p>\n<ol>\n<li>Mandare in esecuzione il form, aprendolo tramite il pulsante &#8220;Modifica dati&#8221; o &#8220;Scrivi.<\/li>\n<li>Avviare Visual Studio Community Edition, individuare nella cartella TEMP dell&#8217;installazione di QualiWare Web Server (generalmente &#8220;\\\\&lt;nomeserver&gt;\\c$\\program files (x86)\\qualiware web server\\temp&#8221;) il file VB corrispondente al form o allo script e aprirlo.<\/li>\n<li>Premere <strong>CTRL-ALT-P<\/strong>, specificare nel campo &#8220;Qualificatore&#8221; il nome&nbsp;del&nbsp;server sul quale \u00e8 installato QualiWare Web Server, e individuare nella lista &#8220;Processi disponibili&#8221; il processo relativo, che \u00e8 denominato w3wp.exe e ha l&#8217;indicazione &#8220;<strong>gestito<\/strong>&#8220;. Accertarsi che sia attivata la spunta &#8220;Mostra processi di tutti gli utenti&#8221;. Una volta selezionato il processo, premere &#8220;connetti&#8221;.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24499\" src=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformconnessionew3wp.png\" alt=\"\" width=\"856\" height=\"580\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformconnessionew3wp.png 856w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformconnessionew3wp-300x203.png 300w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformconnessionew3wp-768x520.png 768w\" sizes=\"(max-width: 856px) 100vw, 856px\" \/><br \/>\nN.B. nella lista potrebbero essere presenti pi\u00f9 processi w3wp.exe con l\u2019indicazione &#8220;<strong>gestito<\/strong>&#8220;.&nbsp;Questo significa che sono in esecuzione pi\u00f9 applicazioni web basate su ASP.NET. In questo caso bisogna collegarsi al server, aprire il task manager, selezionare la linguetta &#8220;dettagli&#8221; o &#8220;processi&#8221;, aggiungere la colonna &#8220;riga di comando&#8221; se non c&#8217;\u00e8, e individuare il processo w3wp.exe nella cui riga di&nbsp;comando sia presente il nome del pool di applicazioni utilizzato&nbsp;dall&#8217;istanza di QualiWare Web Server sulla quale si intende effettuare il debug (generalmente il pool si chiama &#8220;QualiWare&#8221;)<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24495\" src=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformw3wp.png\" alt=\"\" width=\"740\" height=\"589\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformw3wp.png 740w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformw3wp-300x239.png 300w\" sizes=\"(max-width: 740px) 100vw, 740px\" \/><\/li>\n<li>Selezionare la linguetta &#8220;<strong>Moduli<\/strong>&#8221; in basso, inserire nalla casella &#8220;<strong>Ricerca<\/strong>&#8221; il codice della categoria se si vuole fare il debug di un form, o la stringa &#8220;CodeBlock&#8221; se si vuole fare il debug di uno script, e premere &#8220;INVIO&#8221; per individuare la DLL corrispondente. Nel caso in cui la linguetta &#8220;Moduli&#8221; non fosse presente, la si pu\u00f2 attivare dal menu: Debug&#8211;&gt;Finestre&#8211;&gt;Moduli.<br \/>\nSe nella colonna &#8220;Stato simboli&#8221; non \u00e8 presente la dicitura &#8220;Stato simboli&#8221;, \u00e8 necessario procedere al caricamento degli stessi cliccando col tasto destro del mouse e scegliendo &#8220;Carica simboli&#8221; e specificando il percorso del file PDB contenuto nella cartella TEMP. Per i debug successivi non sar\u00e0 pi\u00f9 necessario effettuare questa operazione in quanto Visual Studio manterr\u00e0 memoria del percorso e caricher\u00e0 automaticamente il PDB corrispondente alla DLL.<img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-24503\" src=\"http:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformsimboli-1.png\" alt=\"\" width=\"1092\" height=\"759\" srcset=\"https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformsimboli-1.png 1092w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformsimboli-1-300x209.png 300w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformsimboli-1-768x534.png 768w, https:\/\/help.qualiware.it\/qw-help\/wp-content\/uploads\/debugformsimboli-1-1024x712.png 1024w\" sizes=\"(max-width: 1092px) 100vw, 1092px\" \/><\/li>\n<li>A questo punto sar\u00e0 possibile inserire dei break-point all&#8217;interno del codice degli eventi, e procedere con il debug. L&#8217;inserimento di un breakpoint pu\u00f2 essere effettuato in due modi:\n<ul>\n<li>Dall&#8217;IDE di Visual Studio caricando il sorgente nell&#8217;editor e cliccando sul bordo sinistro in corrispondenza della riga dove si vuole fermare l&#8217;esecuzione<\/li>\n<li>Inserendo nel codice la seguente istruzione:\n<pre>System.Diagnostics.Debugger.Break()<\/pre>\n<p>N.B. Questa modalit\u00e0 \u00e8 l&#8217;unica utilizzabile con gli script, dal momento che ad ogni esecuzione viene rigenerato il sorgente da compilare, che quindi viene eseguito una volta sola.<\/li>\n<\/ul>\n<\/li>\n<\/ol>\n<p dir=\"LTR\" align=\"LEFT\">NOTE:&nbsp;<\/p>\n<ol>\n<li dir=\"LTR\">quanto sopra descritto \u00e8 applicabile anche per effettuare il debug di form mobile e di form collegati a query. L&#8217;unica differenza consiste nel nome del file VB residente nella cartella TEMP, che nel caso di form mobile contiene anche la parola &#8220;<strong>mobile<\/strong>&#8221; mentre nel caso di una query contiene il nome della query stessa.<\/li>\n<li dir=\"LTR\">La modalit\u00e0 di debug degli script sopra descritta \u00e8 utilizzabile solo dalla release<strong> 2015.17.2b<\/strong><strong>&nbsp;<\/strong>in poi in quanto nelle versioni precedenti non veniva generata una DLL su disco ma la compilazione avveniva in memoria.<\/li>\n<\/ol>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>In questa pagina vedremo&nbsp;come sia possibile effettuare il debug dei form sviluppati su piattaforma web e mobile, e degli script inseriti in QualiWare Server Daemon e nei workflow, utilizzando Visual Studio Community Edition, disponibile gratuitamente. 1. Prerequisiti Visual Studio Community Edition con, installate, le funzionalit\u00e0 per lo sviluppo di applicazioni web ASP.NET; Remote Debugger Tools(*);&hellip;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"_acf_changed":false,"ngg_post_thumbnail":0,"footnotes":""},"categories":[97,6],"tags":[],"acf":[],"_links":{"self":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/24485"}],"collection":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/comments?post=24485"}],"version-history":[{"count":1,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/24485\/revisions"}],"predecessor-version":[{"id":30615,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/posts\/24485\/revisions\/30615"}],"wp:attachment":[{"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/media?parent=24485"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/categories?post=24485"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/help.qualiware.it\/qw-help\/wp-json\/wp\/v2\/tags?post=24485"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}