Debug iPad memory issues via Mac - ipad

We have a website which crashes the iPad. On PC dekstops we've managed to lower the memory footprint by alot, and thought this would fix the iPad crash issue. It does not.
We have the iPad now connected to a Mac and are using Safari Web Inspector to debug it.
However, I do not see any option to view the ipad's memory use, or the size of the javascript objects. Is there a good site to go to to learn more about how to use this technique?
Note that it's not a dev Mac with XTools, just someone's personal MacBook.
We really want to just detemine if the error is something otehr than memory usage.

Related

Debug freezing safari on iphone

Problem: So I have that website which is developed with Google Web Toolkit (gwt). However, since the recent patch, the application freezes at a certain point for iPhone5 users with Safari. Other iOS-Devices like iPad seem to work fine so far.
My approach:
However, since I do not have an iPhone, I tried various online tools simulating websites on the iPhone but neither of them is having any trouble. Then I tried the Chrome's built-in device emulator which did not cause any trouble, as well.
Question: Is there any way, I can debug this case or at least reproduce it given the fact that I do not have access to an iPhone?
In case the answer is 'no': how can I debug a freezing Safari given the fact that I get access to an iPhone?
Bonus question: Why do the iPhone emulators not freeze? At least I would expect them to behave in a strange way or give me some message, that something might be wrong.
Solved the problem by using browserstack.com, which emulates an OS environment in-browser, where I could use the iPhone-Dev-Tools. Other browser-based emulators did not work as they did not emulate the OS and thus did not recreate the errors described.

XCode Instruments collects no data

I'm trying to debug a potential javascript memory leak on iOS. My approach (was) to monitor Mobile Safari on my iPad using Instruments, but there's a problem: no matter what process I attach Instruments to, I get no data at all. After setting up the items to watch and starting the monitor, it runs along happily, but shows no memory usage, no CPU usage, nothing. Is there something I need to do with my iPad or Instruments to enable collection of this data?
I also had this issue with xCode 6 where the instruments would show like it's recording data although there was no actual data presented or collected.
Restarting my Mac Mini, restarting xCode, cleaning the build and disconnecting and connecting my iPad did not solve this issue.
However, my other devices were profiling just fine.
The solution I found is to reboot the iPad. (You reboot your device holding the home button and the power button for a few seconds. Then to turn it on again you press the power button).
This solved this issue and I was told it can solve other xCode related issues like when your program keep running on Debug even when you run it on Release.
Hope this helps.

How to debug crashing iOS Safari when Web Inspector and the logs don't indicate anything?

Are there any strategies for troubleshooting a page that crashes iOS Safari when
Appears to be a problem rendering - the page starts to load/render then fail
Only on iPhone. iPad is just fine. Both iPhone 5s and 4s.
Web Inspector in desktop Safari closes immediately after iOS Safari closes
Nothing concrete in the crash logs for Safari
The iOS simulator seems to be fine
If so, what can I do? I can't give any concrete code for the page as I have no idea what is causing it - it would just be a link to the page.
Check out Fiddler, I use it mainly on a PC but there seems to be a Mac build as well. It may help give you a bit more insight into the traffic coming in and out of your machine. Although if the page crashes Safari the issue may be on your machine in which case Fiddler wont help much but its worth a shot to see if some of the web traffic is causing the issue.
http://fiddler.wikidot.com/mono
Can you be a bit more specific as to the page, what it does, why it may cause a crash, did you write it or is it a page out there that you are trying to access?

Is necessary purchase some physical devices (smartphone/tablets) for develop/test a mobile website?

I'm currently developing a mobile website with jquery mobile, not exactly responsive web design. I know I can develop the project in the browser on my desktop PC with some plugins or use some online services or simulators available. But I'm not sure if I missing something really important for test.
Example:
touch/swype events or viewport rotation.
Is necessary purchase some physical devices (smartphone/tablets) to develop/test the project? Why?
Intro
First don't let anyone tell you it is not necessary to purchase a real devices for a test purpose. I will tell you why from an Android perspective, same thing, just in a much smaller manner also goes for iOS development.
Good sides of an emulator testing
It is free, you only need a computer which will run your emulator.
You can test your applications in different cases (different screen resolutions, different OS versions)
Faster I/O and network operations but this is not so much a good point if you calculate how much everything else is slow.
Bad sides
It is slooooooooow, if you never tried to use it you can comprehend how slow it is (iOS emulator is fast like hell in a comparison). It doesn't matter if you have a top of a line hardware PC or Mac it is just that slow.
Emulator is simply to darn buggy, there will be a lot of times when application will work just fine on a read device and it will brake on an emulator.
This also goes other way around, sometimes application will work just fine on an emulator but will brake on a real device, in some case it will not work at all or it will not work on some devices. This is usually a case when working with hybrid applications. for some reason Android web view acts differently on real devices and on an emulator.
Emulator simply don't have some functionalities to interact with a hardware nor it can successfully emulate it. Hardware connection it can emulate even don't work correctly sometimes.
I have talked about how slow it is (because of a converting ARM bytecodes to x86 ones on the fly) but from a graphics standpoint it tends to be even slower so don't expect to do any game development on it.
Real devices comes with much more preinstalled software which may slower your application or in some ways enhance its functionalities.
Real world GPS testing is out of a question
Final notes
If you are intending to work with iOS only emulator can be used to do much of a development. Sheer lack of different screens sizes and hardware diversity makes it a perfect platform for a test purposes. Android on the other hand is completely different story, its emulator is simply useless for test purposes. I have several real Android devices, ranging from Android 2.1 + , different screen sizes and finally hardware architecture. You don't need to believe me but everything I mentioned play a significant role while testing Android applications.
If your main concern is testing your jQuery Mobile application I would still advise you a use of a real device in case of Android while in case of iOS you can successfully use emulator. Android is problematic because transition effects are to darn slow and that includes everything else that requires animations. Swipe will not be a problem and I can vouch it works just fine. Second real problem is a device rotation. jQuery Mobile sometimes can have a problem with it, mostly when used with non responsive 3rd party jQuery plugins (carousels, sliders ....). Third problem is mentioned in my list of bad sides, basically web view used in a emulator acts different then one in a real phone so sometimes you will see one thing in your real device and one thing in your emulator.
It is not necessary to purchase such a device.
For Android there is an emulator provided by the Android Development Kit (ADK). You can use it to configure multiple emulated devices with defferent screen sizes, etc. to test for multiple resolutions and Android (browser) versions.
[edit] Though to really test it for iphones you would need that emulator too I suppose, to make sure the website is correctly displayed in the provided browser.
[edit 2] To test "real" smartphone apps (not webapps), it is better to have a real device at hand.
This very much depends to which level you want to test it before you are happy to hand it over for the usage. After you do that and someone reports a defect, will you be able to see where is the problem (if it works on your PC)?
The development itself can be done in your browser, you can even simluate swipe events by dragging mouse. You don't even need any simulators, you can just make chrome window smaller (most of the devices are using some version of webkit, same as chrome).
However, once it comes to testing, I wouldn't feel great if I didn't know how it looks on the device itself. So I think having at least one device (ideally two with different OS and resolution) is always beneficial.
I would also be unsatisfied if I was working on something of which I could not see the result :)

AIR mobile debug - "Enter ip address or hostname"

I'm developing a mobile app using Flash Builder 4.6/AIR. I've been able to debug on the device (an iPhone 4s) just fine until now. I connect my iPhone to my mac with the USB corad, and debug.
All of a sudden I'm getting a black screen for close to a minute. Then I see the "Enter ip address or hostname" dialog. If I enter the ip address of my machine it doesn't matter. The window goes away for about 15 seconds, then comes back. Meanwhile, Flash Builder on my mac times out. The only way I can actually see the program running is if I hit 'Cancel' on that dialog. The app then launches, but I cannot set any breakpoints, cannot debug.
Everything I've found on the internet around this issue mentions it in reference to AIR for android -- not iOs. But I'm seeing it with iOs.
Anyone know what's going on here?
Thanks.
To make it easier for future readers, the official answer to this issue;
With the current (official) version of the AIR SKD (3.2) USB debugging is not supported on iOS devices. This is going to change with the future 3.3 release which (amongst others) adds USB debugging support:
"USB debugging for AIR iOS
This new feature allows the iOS developer to connect to the desktop via USB while debugging their mobile applications instead of relying on network connectivity."
With version 3.2, iOS debugging works over the local network, so both devices (the machine the debugger runs on and the iOS device) have to be in the same network so that they can communicate with each other.
See also the reply to What is the address of my Flash debugger?, it really helped me to resolve similar issue. Using 'ios-debug' mode was the way to go.
If you still have this problem using Android with the device connected to same wifi, try checking firewall rules. In my case FlashDevelop was blocked and I didn't suspected because of updates worked perfectly.

Resources