VS2010 Just in time debugger doesn't show entire message - visual-studio-2010

I often get the Just-in-time debugger window, and most often no message is shown, but some times I can't see the entire exception, which could be useful.
When I try to run the debugger I always get an error that another debugger is already atached, which leads me nowhere. The window is not resizable and the text can't be copied.
I'm developing in VS 2010 + C# + Silverlight, and it happens when running via VS.
Any insights?

You get "another debugger is already atached" because you are already in debug mode and your browser's process attached to your code.
Firstly,
Handle global exceptions in your App.xaml
Secondly, In your browser open developer inspector. (F12 for most of browser) and watch console.
http://msdn.microsoft.com/en-us/library/system.windows.application.unhandledexception(v=vs.95).aspx?cs-save-lang=1&cs-lang=csharp#code-snippet-3
using System.IO; // FileNotFoundException
using System.Windows; // Application, StartupEventArgs, ApplicationUnhandledExceptionEventArgs
namespace SilverlightApplication
{
public partial class App : Application
{
public App()
{
this.Startup += this.Application_Startup;
this.UnhandledException += this.Application_UnhandledException;
InitializeComponent();
}
private void Application_Startup(object sender, StartupEventArgs e)
{
this.RootVisual = new Page();
}
private void Application_UnhandledException(object sender,
ApplicationUnhandledExceptionEventArgs e)
{
if (e.ExceptionObject is FileNotFoundException)
{
// Inform the user
// Recover from the error
e.Handled = true;
return;
}
// Exception is unrecoverable so stop the application and allow the
// Silverlight plug-in control to detect and process the exception.
}
}
}
Secondly, In your browser open developer inspector. (F12 for most of browser) and watch console. The message comes from index.aspx which your xap hosted. There is a silverlighterror js function response it.
function onSilverlightError(sender, args) {
var appSource = "";
if (sender != null && sender != 0) {
appSource = sender.getHost().Source;
}
var errorType = args.ErrorType;
var iErrorCode = args.ErrorCode;
if (errorType == "ImageError" || errorType == "MediaError") {
return;
}
var errMsg = "Unhandled Error in Silverlight Application " + appSource + "\n" ;
errMsg += "Code: "+ iErrorCode + " \n";
errMsg += "Category: " + errorType + " \n";
errMsg += "Message: " + args.ErrorMessage + " \n";
if (errorType == "ParserError") {
errMsg += "File: " + args.xamlFile + " \n";
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
else if (errorType == "RuntimeError") {
if (args.lineNumber != 0) {
errMsg += "Line: " + args.lineNumber + " \n";
errMsg += "Position: " + args.charPosition + " \n";
}
errMsg += "MethodName: " + args.methodName + " \n";
}
throw new Error(errMsg);
}
Finally, always ensure that (if exist) in your web project's settings.In Web Section there is a Silverlight Checkbox for debugging. It must be checked for debugging attachment.
One more clue: In VS Ctrl + Alt + E and then select CLR exceptions , when you launch you will get more details about error. But do it where error exactly occurs. Because it sometimes give non-errors,but caught by debugger.
Hope helps!

Related

ESP32 WifiClientSecure no response

I'm working on a project using a google script to publish images from an ESP32-CAM to google drive.
I keep getting the error "no response", no matter how long I set the wait peroid to. I tried using http and https(wificlient and wificlientsecure) but it doesn't work no matter what.
What could be the issue?
WiFiClientSecure clienthttps;
Serial.println("Connect to " + String(myDomain));
if (clienthttps.connect(myDomain, 443)) {
Serial.println("Connection successful");
camera_fb_t * fb = NULL;
fb = esp_camera_fb_get();
if (!fb) {
Serial.println("Camera capture failed");
delay(1000);
ESP.restart();
return;
}
char *input = (char *)fb->buf;
char output[base64_enc_len(3)];
String imageFile = "";
for (int i = 0; i < fb->len; i++) {
base64_encode(output, (input++), 3);
if (i % 3 == 0) imageFile += urlencode(String(output));
}
String Data = myFilename + mimeType + myImage;
esp_camera_fb_return(fb);
Serial.println("Send a captured image to Google Drive.");
Serial.println("POST " + myScript + " HTTP/1.1");
Serial.println("Host: " + String(myDomain));
Serial.println("Content-Length: " + String(Data.length() + imageFile.length()));
Serial.println("Content-Type: application/x-www-form-urlencoded");
Serial.println(Data);
Serial.println();
clienthttps.println("POST " + myScript + " HTTP/1.1");
clienthttps.println("Host: " + String(myDomain));
clienthttps.println("Content-Length: " + String(Data.length() + imageFile.length()));
clienthttps.println("Content-Type: application/x-www-form-urlencoded");
clienthttps.println();
clienthttps.print(Data);
int Index;
for (Index = 0; Index < imageFile.length(); Index = Index + 1000) {
clienthttps.print(imageFile.substring(Index, Index + 1000));
}
Serial.println("Waiting for response.");
long int StartTime = millis();
while (!clienthttps.available()) {
Serial.print(".");
delay(100);
if ((StartTime + waitingTime) < millis()) {
Serial.println();
Serial.println("No response.");
//If you have no response, maybe need a greater value of waitingTime
break;
}
}
Serial.println();
while (clienthttps.available()) {
Serial.print(char(clienthttps.read()));
}
} else {
Serial.println("Connected to " + String(myDomain) + " failed.");
}
clienthttps.stop();
Note that in the latest "github.com/espressif/arduino-esp32" (as at 17Jan23) the command
"WiFiClientSecure.println();" (your "clienthttps.println()") seems to corrupt the SSL-buffer somehow, and although the command returns after a bit, the SSL-connection fails at that point (this didn't happen in earlier versions of the software).
The solution which worked for me was to ensure I at very least sent "WiFiClientSecure.println(" ");" (ie. " \r\n") as this seems to work.
(This solution appears also often necessary if sending data over a GPRS connection because in that instance a ".println()" seems to be ingored!)

Java IO not displaying file data

Okay, I guess I'm stuck here. Can't get the values from the file to show in JOptionPane's message dialog box where it's enclosed within a while loop.
Right now I don't know which method of Input/Output stream to use to display all the data on this file which I believed to be serialized as UTF8??
Please tell me what to do and what things I missed since I'm new to java.io classes.
Also, the file StudentData.feu was just given to me. It's not that I don't want to research on my own because I already did, I'm just stuck. I read the Javadoc but I'm clueless right now.
import java.io.*;
import javax.swing.JOptionPane;
public class MyProj {
public void showMenu() {
String choice = JOptionPane.showInputDialog
(null, "Please enter a number: " + "\n[1] All Students" + "\n[2] BSCS Students" + "\n[3] BSIT Students"
+ "\n[4] BSA Students" + "\n[5] First Year Students" + "\n[6] Second Year Students" + "\n[7] Third Year Students"
+ "\n[8] Passed Students" + "\n[9] Failed Students" + "\n[0] Exit");
int choiceConvertedString = Integer.parseInt(choice);
switch(choiceConvertedString){
case 0:
JOptionPane.showMessageDialog(null, "Program closed!");
System.exit(1);
break;
}
}
DataInputStream myInputStream;
OutputStream myOutputStream;
int endOfFile = -1;
double grades;
int studentNo;
int counter;
String studentName;
String studentCourse;
public void readFile()
{
try
{
myInputStream = new DataInputStream
(new FileInputStream("C:\\Users\\Jordan's Pc\\Documents\\NetBeansProjects\\MyProj\\StudentData.feu"));
try{
while((counter=myInputStream.read()) != endOfFile)
{
studentName = myInputStream.readUTF();
studentCourse = myInputStream.readUTF();
grades = myInputStream.readDouble();
JOptionPane.showMessageDialog
(null, "StdNo: " + studentNo + "\n"
+ "Student Name: " + studentName + "\n"
+ "Student Course: " + studentCourse + "\n"
+ "Grades: " + grades);
}
}
catch(FileNotFoundException fnf){
JOptionPane.showMessageDialog(null, "File Not Found");
}
}/* end of try */
catch(EOFException ex)
{
JOptionPane.showMessageDialog(null, "Processing Complete");
}
catch(Exception e)
{
JOptionPane.showMessageDialog(null, "An error occured");
}
}
}
while((counter=myInputStream.read()) != endOfFile)
The problem is probably here. You're reading a byte and then throwing it away. It isn't likely that the file contains extra bytes like this that are intended to be thrown away. The correct loop would go like this:
try
{
for (;;)
{
// .... readUTF() etc
}
}
catch (EOFException exc)
{
// You've read to end of file.
}
// catch IOException etc.

Get path of project created in experimental Instance of Visual Studio

I am developing a Visual Studio extension package. Every time I test run, an experimental instance of VS opens up. I created a project in the experimental instance; how can I get the path of the project created in the experimental instance?
Given the IVsHierarchy object that represents the project hierarchy, you can use the VSITEMID_ROOT id when calling the GetProperty method with the VSHPROPID_ProjectDir / VSHPROPID_Name properties.
Alternatively, if you have an EnvDTE.Project, then you can use the EnvDTE.Project.FullName property.
The first thing you should import EnvDTE (in EnvDTE.dll). Then I declared property ProejectFullName
string ProejectFullName{ get; }
A string representing the full path and name of the project object’s file.
public void GetmyFilePath(DTE2 dte)
{
try
{ // Open a project before running this sample.
Project prj = dte.Solution.Projects.Item(1);
Projects prjs;
string msg, msg2 = "Global Variables:";
msg = "FileName: " + prj.FileName;
msg += "\nProejectFullName: " + prj.ProejectFullName;
msg += "\nProject-level access to " + prj.CodeModel.CodeElements.Count.ToString() +
" CodeElements through the CodeModel";
prjs = prj.Collection;
msg += "\nThere are " + prjs.Count.ToString() + " projects in the same collection.";
msg += "\nApplication containing this project: " + prj.DTE.Name;
if (prj.Saved)
msg += "\nThis project hasn't been modified since the last save.";
else
msg += "\nThis project has been modified since the last save.";
msg += "\nProperties: ";
foreach (Property prop in prj.Properties)
{
msg += "\n " + prop.Name;
}
foreach (String s in (Array)prj.Globals.VariableNames)
{
msg2 += "\n " + s;
}
MessageBox.Show(msg, "Project Name: " + prj.Name);
MessageBox.Show(msg2);
}
catch(Exception ex)
{
MessageBox.Show(ex.Message);
}
}

Ace editor - It doesn´t change the error window dynamically

I have the next code:
var exeWindow = document.getElementById("exeWindow");
var errorWindow = document.getElementById("errorWindow");
var annot = editor.getSession().getAnnotations();
editor.getSession().on("changeAnnotation", execute);
function execute(){
exeWindow.innerHTML = eval(editor.getValue());
errorWindow.innerHTML = "";
annot = editor.getSession().getAnnotations();
for (var key in annot){
if (annot.hasOwnProperty(key))
console.log(annot[key].text + "on line " + " " + (parseInt(annot[key].row)+1));
errorWindow.innerHTML = annot[key].text + " Line " + " " + (parseInt(annot[key].row)+1);
exeWindow.innerHTML = "";
}
if (TogetherJS.running) {
TogetherJS.send({type: "execute"});
}
};
Im trying to capture the error logs, and before execute a valid code works, but once I introduce for example 2+2, despite of exeWindow changes correctly, if a rewrite it to 2+a for example, searching a new error, the exeWindow doesn´t changes and the error does not appears in errorWindow.
EDIT: Sorry, the problem is that is not getting the correct errors, only the errors like 'missing semicolon'.
If someone is interested, the solution I found is the next one:
function execute(){
try {
exeWindow.innerHTML = eval(editor.getValue());
errorWindow.innerHTML = "";
} catch(err){
var annot = editor.getSession().getAnnotations();
for (var key in annot){
if (annot.hasOwnProperty(key)){
errorWindow.innerHTML = annot[key].text + " Line " + " " + (parseInt(annot[key].row)+1);
exeWindow.innerHTML = "";
}
}
}
if (TogetherJS.running) {
TogetherJS.send({type: "execute"});
}
};
Simple as that :)

Facebook User with ParseFacebookUtils.LogInAsync (Unity)

I am using Unity Facebook SDK for facebook login in my project (C#) And I login successful with my facebook account Then I am trying to use logInSync through
ParseFacebookUtils.LogInAsync (FB.UserId, FB.AccessToken, DateTime.Now);
but in Parse cloud browser don't have any data about it :(
void OnLoggedIn()
{
FbDebug.Log ("Logged in. ID: " + FB.UserId);
ParseFacebookUtils.LogInAsync (FB.UserId, FB.AccessToken, DateTime.Now);
}
Please help me, Thank you so much...!!!
To find the root of problem you must handle errors that happen during LogInAsync task execution. You can handle errors this way:
System.Threading.Tasks.Task<ParseUser> logInTask = ParseFacebookUtils.LogInAsync (FB.UserId, FB.AccessToken, DateTime.Now);
logInTask.ContinueWith (t => {
if (t.IsFaulted || t.IsCanceled) {
Debug.Log ("Parse Login failed");
Debug.Log ("t.Exception=" + t.Exception);
foreach (Exception e in logInTask.Exception.InnerExceptions) {
ParseException parseException = (ParseException)e;
Debug.Log ("Error message " + parseException.Message);
Debug.Log ("Error code: " + parseException.Code);
}
} else {
ParseUser userFB = t.Result;
Debug.Log ("Parse Login Succeeded with userFB.ObjectId = " + userFB.ObjectId + " userFB.Username=" + userFB.Username);
}
});

Resources