Unable to receive debug messages for crashing cordova app on windows 8.1 phone device - debugging

I have VS 2015 Enterprise RC installed and am in the process of porting a Cordova app, deployed on iOS and Android, to Windows 8.1 Phone / Universal
After making the necessary changes I have an App that crashes shortly after the splash screen is displayed on device.
I don't see any error messages in visual studio Error / Output windows or on the device. The app just vanishes
Can anyone provide a method to capture information surrounding critical app failure on the device in VS or otherwise for debug purposes?

I think it was because you got a native exception which cannot be captured by current debugger type. In classic windows phone project like c# and winjs project, we can set the debugger type to support both managed and native. I think it's worth to try if you can get more info by enable native debugger.
By default, for Cordova project, the default debugger type is Script only. We can find it out by enable Diagnostic build log: Tools->Options->Projects and Solutions -> change "MSBuild project build output verbosity" to Diagnostic.
Then let's take an example to show what we can find:
Create a new black cordova project.
Change Solution Platform to Windows Phone (Universal) and select "Emulator 8.1 WVGA 4 inch 512MB".
Build the solution. Then let's check the build log in output window.
When searching "debuggertype" in output window, we will be able to find the following info:
DebuggerFlavor = PhoneEmulator81Wvga4512
DebuggerType = Script
DebugSymbols = false
DebugSymbolsProjectOutputGroupDependsOn =
DefaultContentType = Default
DefaultReferenceGroup = Implicit (Apache Cordova)
DefineCommonReferenceSchemas =
DefineExplicitDefaults = true
We can see the DebuggerType was set to Script. This is inherited from globle settings in MSBuild. You will be able to find what the file is from the Diagnostic build output log as well.
Then let's see how we can change it to capture native exceptions. Go to your project folder and open .jsproj.user file. We can find the following setting:
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
Now, change it to the following will change the debugger type, you can verify that in build log.
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|Windows Phone (Universal)'">
<DebuggerType>Mixed</DebuggerType>
<DebuggerFlavor>PhoneEmulator81Wvga4512</DebuggerFlavor>
</PropertyGroup>
Then you can run your app again to see if it will get any info in your visual studio output windows.

From my experience, debugging the solution from the platform/windows directory is easier but I don't know if that will help in your situation.
There is also plugin that helps with console.log logging.
The most popular bug in Windows Phone 8.1 / Universal Cordova apps is using libraries that manipulates DOM without Winstore Jscompat library. If you are using Angular, Ember, Knockout or something similar it causes the crash with first operation on DOM.

Windows Phone collects all crash data in a dump file. Activate this feature under:
Settings > Reports
After that, the dump files are created in the following folder on the phone:
WindowsPhone/Phone/Documents/Debug/
You can open an analyze them with Visual Studio.

Related

I'm having trouble connecting Visual Studio 2019 to the Microsoft Hololens v2 Emulator for deployment

I am trying to deploy a simple unity app to the Hololens v2 emulator. I followed some tutorials to build the unity files according to the Hololens build framework. The tutorials on Microsoft show there being an option in visual studio 2019 to connect the debugger to the hololens v2 emulator application, but no such option exists on my installation of Visual Studio, despite it being within the stated requirements, version 19.2 or later. Mine is 19.11
My version of Visual studio is 19.11, which should meet the requirement of 19.2 or later
here: https://learn.microsoft.com/en-us/windows/mixed-reality/develop/platform-capabilities-and-apis/using-visual-studio?tabs=hl2
It is shown having an option to target the emulator directly, and an option to target a remote device if using a physical hololens. I have neither option in my debug settings.
What the tutorials show
What my visual studio shows
I attempted to set it up like the remote machine setup shown in the tutorial, getting the correct hololens machine name by accessing the ip address of the emulator, but to no avail, it refuses to connect
It compiles properly, but then comes up with this error when run with those settings (with the correct machine name rather than a filler like I have in the image)
Does anyone have any ideas as to how to fix this? I have updated visual studio multiple times already.
Please make sure the correct project has been selected for the startup project. To change the startup project, you should navigate to Solution Explorer, right-click the desired project and choose Set as StartUp Project from the context-sensitive menu that is displayed.

Xamarin.Forms Android app crashes on startup (in release build only)

I have a Xamarin.Forms Android app that runs reliably in debug build but crashes immediately, on startup, in release build.
My dev environment comprises of a Windows 10 PC with Visual Studio 2019, which is USB connected to the Android 9.0 device that I am testing against.
I have attempted to narrow down the cause of the issue by editing the Visual Studio release build configuration, one setting at a time, until it matches the working debug configuration. However, even with the release build config identical to the debug build config, the crash still occurs. Does this mean that Visual Studio is applying some other release build settings, apart from those configurable in the UI?
Is there any way to access diagnostic information from this crash? Any other suggestions how to identify the cause?
I am happy to post more details of the project configuration and development environment, if it helps.
Update: As suggested by several posters, I have retrieved the logcat data for the crash, but I am not sure how to interpret it, or where to go next:
Check the Device Log. It should contain Unhandled Exception Info for your App.
See here: View->Other Windows->Device Log - it is the Logcat's log, just in built-in to VisualStudio window.
Tip1: Open it before running your App, and choose your device in top-left.
Tip2: Watch the log immediately after the crash (better copy-it, paste into an editor), because it is overwhelmed by messages very quickly.

Error: Unable to activate Windows Store app …. The xxx.exe process started, but the activation request failed with error ‘The app didn’t start’

Using Visual Studio 2013 Ultimate update 4, I have developed a universal app for the store and the phone under Windows 8.1. The app is implemented upon the Prism for Windows Runtime.
The app is at its final testing stage. I have no problem to run/test it with the corresponding emulators and devices (Surface Pro and Lumia 1020) until few days ago. Although the app can still run/test with the emulators (The store app can be still packaged and deployed to Surface Pro for testing). But I will receive following error message when running with device (Lumia 1020) under Visual Studio 2013:
Unable to activate Windows Store app …. The xxx.exe process started, but the activation request failed with error ‘The app didn’t start’.
I have tried all followings in number of times, still received the same error message (there is no app.config file used in app (at least not being seen in the solution pane and windows explorer):
Roll back to the change set where I have successful made the build and deployed to Phone.
Run repair on Visual Studio
The problem has been fixed.
I have used MS Ocr Lib. for Phone once which only works for ARM. After using NuGet to remove Ocr lib., OcrResource folder still remains in the phone project.
To fix the problem, one must either deletes OcrResource folder if the target platform is for Any CPU, or keep OcrResource folder and set the target platform as ARM.

How to debug JS on Windows Phone 8.1 Cordova Project

I have been trying to debug a Windows Phone 8.1 app using Cordova on Visual Studio.
I would like to debug the Javascript in the app - set break points and such in Visual Studio.
I have tried Weinre, and it gives me DOM elements, and read logs from console, but I would like to know if there is any way I can set breakpoints in the Javascript and see if a code path is executed and look at the local variables and step-in.
I have tried to search online, but couldn't really find a good way to do this - actually I couldn't find any way that was working.
If you guys were able to find a way to debug Javascripts effectively in Windows Phone 8.1 apps, please let me know :).
Debugging Apache Cordova apps on Windows Phone targets is not yet supported in the current release but you can open up the native Windows Phone project (CordovaApp.Phone.jsproj) that's under the bld\Debug\platforms\windows folder of your Cordova project and you'll have full JS debugging support from within Visual Studio for that one.
Since this is not yet answered: You can debug Windows Phone 8.1 apps perfectly (=breakpoints, watches, ...) using Visual Studio 2015 (e.g. the free community version).

Debugging Win Mobile 6 App with Visual Studio 2008

When I go in to debug the app, it asks me to choose where I would like to deploy it. When I select Windows Mobile 6.5.3 Professional Emulator and click the Deploy button, it starts to work and throws up a command line and then it goes away and Visual Studio doesn't appear to be in debug mode.
I have the Device Emulator open, Windows Mobile 6.5.3 Professional Emulator loaded and cradled. Can someone help me figure out why it will not let me debug this project?
Brad, I downloaded the code and just unpacked the zip to D:\boxoffice_mobile (a local drive partition). Then I started VisualStudio 2008 and opened the solution file. I get a warning message that the project is not loaded from a trusted location (http://msdn.microsoft.com/en-us/library/bs2bkwxc%28v=vs.80%29.aspx). As I do not use a network drive, I ignored the warning two times and the projects load all fine.
BTW: I found a great tool to manage these 'security' warnings: http://blog.codingoutloud.com/2010/03/05/the-project-location-is-not-trusted-dealing-with-the-dreaded-unblock/. The message had nothing to do with a remote file access.
Then I just looked at the solution configuration to ensure that only the needed projects are build and did no change, as only BoxOfficeMobile and WebserviceTest are set to build and only BoxOfficeMobile is set to deploy.
Then closed solution configuration manager and just pressed F5 to start debugging to see what happens.
The startup project BoxOfficeMobile was build and deployed to "Windows Mobile 6.5.3 Professional Emulator". The emulator started and the files were deployed and the project was stopped by a breakpoint inside the code:
Here is another screen shot with the emulator set to 'Display: Always on top':
So, as you can see, the project is fine and the debug issue on your site is caused by a different setup.
Do you load the project from a network drive share? Try moving it to a local drive and run it from there.
Did you change Device settings in the VS2008 Tools:Options menu? Here is my setup (as coming as default, I did not change anything):
and the details:
The additional settings available via the buttons are empty (Configure) or unchanged (Emulator Options).
I am very interested in seeing what you changed to be not able to debug the project.
before you start developing for Windows Mobile 6.5 Prof, you need to setup your development environment.
First, install Visual Studio 2008 (no express version)
Download and install either ActiveSync (host OS <= Windows XP) or Windows Mobile Device Center / WMDC (Windows Vista/7)
[optional] Download and install Device Emulator Manager
Then download and install Windows Mobile 6.5 DTK (http://www.microsoft.com/en-us/download/details.aspx?id=5389)
Now, you can start a new C# project inside Visual Studio 2008:
Follow the wizard:
The list of Target Platforms depend on the Mobile/CE SDKs you have installed!
Select either .Net Compact Framework 2.0 or 3.5. The choose depends on what is installed on your PC and what is available on the device. If the device comes with 2.0 pre-installed, I would choose 2.0 except for I need something only available in 3.5 (ie Mobile.Status namespace).
Now you get an empty form:
You can change the target device in the project properties:
If you want to change the target platform, look at "Change Target Platform" in Project menu or just right click the project in solution explorer and select Change Target Platform:
The above has nothing to do with Device Emulator Manager or the installed Emulator Images!
You can run a WM5 targeting project on a Windows Mobile 6.5 device if you want.
To start debugging and SmartDevice application inside an emulator. Just Select an Emulator entry from the target device list in Project properties or just in the SmartDevice toolbar. Then click Debug and "Start Debugging". VS will start an emulator with the specified emulator image and deploys your project application files and start remote devugging.
You may also start an emulator image using DeviceEmulatorManager and then cradle the running Emulator image. To use the running and cradled (ActiveSync or WMDC connected!) emulator do NOT select an emulator inside VS but a Device. VS does not see the difference and uses the WMDC connected device, regardless of being an emulator or real device.
VS uses DMA to communicate with the emulator, not USB or Serial as with a real device.
Now start your development.
First of all clean your project.Then freshly start the emulator.Right click the project and select build.Then Debug the project.Your project will be started in Emulator (Don't Open the application from your Emulator at this time).
Just check your Emulator Start>File Explorer>My Device>Program Files whether the project has been previously installed.If so uninstall from the Settings> System > Remove Programs. And try re-building application and deploy it.

Resources