I'm writing an app for a Pocket PC device which appears to be slowly leaking resources - after 24hrs the device slowly becomes unresponsive and eventually locks up altogether.
On XP/Vista I would at this point fire up trusty PerfMon and plot graphs of handles, threads, memory, mutexes etc - anything that could be leaking.
Can someone recommend an approach for this on Windows Mobile? What would be ideal would be a mobile agent that collects performance counters and reports them back to a PC-based instance of PerfMon.
I have seen this article, but it appears to be specific to .NET compact framework - I still work in C++/win32.
You could start out with App Verifier, but really the tool that I (and everyone I know) uses is Entrek's Codesnitch. That thing pays for itself in the first use, every time.
Embedded Visual C++ 4 contained "Remote Performance Monitor" that could do just that. Microsoft retracted EVC4 as free download some time ago, but it can still be downloaded from MSDN or found on the internet. It does not appear to work with Windows Embedded 6 and newer though and I am not sure which kernel Windows Mobile 6 are built on.
Related
I'm currently having a hard time driving down the peak memory consumption of my background agent below the 6MB limit. Are there any recommendations for WP7 capable memory profilers. I am not even asking for something along the lines of dotTrace but basically anything that offers some insight about what's going on.
The Windows Phone SDK comes with a profiler for both memory consumption, and other things, that's available in Visual Studio after installation of the SDK.
You can read more about it on MSDN
Also, try look isolated at the background agent code, and move it to a separate application, where you run it in the foreground. That could possible make it easier for you to nail where the problem is.
I'm developing an application in LabView on Windows. Starting a week ago, one test machine (a ToughBook, no less) was freezing up completely once every couple days: no mouse cursor, taskbar clock frozen. So yesterday it was retired. But just now, I've seen it on another machine, also a laptop.
This is a pretty uncommon failure mode for PC's. I don't know much about Windows, but I'd expect it to indicate that the software stopped running so completely and suddenly that the kernel was unable to panic.
Is this an accurate assessment? Where do I begin to debug this problem? What controls the cursor in the Windows architecture — is it all kernel mode or is there a window server that might be getting choked by something? Would an unstable third-party hardware driver cause this, rather than a blue screen?
EDIT: I should add that the freezes don't necessarily happen while the code is running.
I'd certainly consider hardware and/or drivers as a possibility - perhaps you could say what hardware is involved?
You could test this by adding a 'debug mode' for each piece of hardware your LabVIEW code talks to, where you would use e.g. a case structure to skip the actual I/O calls and return dummy data to the rest of the application. Make sure it's a similar amount of data to what the real device returns. You'll find this much easier if you've modularised your code into subVI's with clearly defined functions! If disabling I/O calls to a particular bit of hardware stops the freezes it would suggest the problem might be with that hardware or its driver.
Hard to say what the problem is. Base on the symptoms I would check for a possible memory leak (see if your LabVIEW app memory usage is growing overtime using "windows task manager").
My team is currently using VS2005 with the following development PCs that are a few years old: XP, Pentium D 2.8GHz, 2GB RAM.
My gut tells me that this is going to be poor hardware for VS2010 development. I am not running VS2010 beta but I am running Blend 3 beta and the performance is bad.
Can you point me to anything that I can show my boss to convince him to buy 6 new machines for my team?
Edit below after initial answer from Jon:
I should have added that my boss wants to upgrade current machines with new hard-drives so I am trying to use this opportunity to take a look forward and see if a HD upgrade is really worth it. This HD upgrade would not just be simple installation of 2nd drive but would replace current drive and would involve backup/restore or reinstallation headaches. There would be the added benefit of 64bit development too, something that we have been talking about.
Betas typically are bad in terms of performance. I know that MS is working hard to improve the performance of VS2010.
However, I have the beta running on my Samsung NC-10 netbook, so it does work on low spec machines.
Do you already find yourself frequently waiting for your machine to catch up? If so, that's the reason to give your manager: you'll be more efficient now with a new machine. If not, wait until VS2010 is out and you actually have it installed (will you even upgrade immediately?) - then if it's too slow, you can show that to your manager at that point.
Speculatively requesting an upgrade doesn't sound like a good idea to me.
Given that those Pentium-Ds are dual core processors, I'd suggest:
maxing out the RAM
Windows 7 x64
separate faster HDDs
Those CPUs, while not at the top of the list, are decently powerful. They should handle today's workload of VS2005/2008 without much problems.
It's likely back to the RAM and probably HDD speeds. I know you didn't mention HDD at all, but consider 2 drives (OS and data) an SSD drive instead.
I realize this isn't a direct answer to your question of how to convince your boss to kick out the money, but if that doesn't work, perhaps this will help in terms of getting more performance.
Even though I'm late a little, I guess I need to add that MS is really working hard to improve the performance of VS2010, but they aren't successful here. Using WPF slowed VS 2010 down a lot.
My experience shows that VS2010 has the only drawback, it's slow. Therefore, the developer machine should be based on Nehalem processor core at least and possess 4Gb memory.
Anyway VS2005 is not the best choice. VS2008 is much more mature.
Microsoft already has a Windows 7 Beta Customer Preview Program on their MSDN site where they encourage us to: "Evaluate and jump-start your development efforts on Windows 7 Beta".
Do you feel it is worthwhile to spend my time now re Windows 7, or should I wait a few releases, or even until after Windows 7 is released?
What are the advantages and disadvantages to starting this early?
As Paul said, there's absolutely no reason not to start now. What you fix now is something less to fix later - and you also get the benefit of having an application that is deployable on an OS that over 2.5m people are expected to download and install over the next few weeks.
Of course, you can expect to run the risk of having to make minor adjustments to your program as bug fixes are implement, or as new features are rolled out, but what you do now will still save you time - even if it just saves you having to become familiar with any platform-specific constraints further down the line, when pressures from potential clients, customers, etc. will be significantly higher.
I've installed windows 7 on two computer. So far, there has only been one small issue (the software did not find a USB device). I ran the compatibility wizard and now it works fine.
They have made it easy enough for a end user to take care of.
It's basically Vista 6.2. Lots of good improvements but not a new operating system. So it's no rush to test,
I've downloaded the Windows 7 beta and will be installing it into a VM shortly.
There's really no reason not to check your stuff on it now. It's way better for you to find and fix any problems before your users do.
The Free MS Windows replacement operating system ReactOS has just released a new version. They have a large and active development team.
Have you tried your software with it yet?
if so what is your recommendation?
Is it time to start investigating it as a serious Windows replacement?
Targeting ReactOS specifically is a bit too narrow IMO -- perhaps a better focus is to target compatibility with WINE. Because ReactOS shares so many of its usermode DLLs with WINE, targeting WINE should result in the app running just fine on ReactOS.
Of course, there will always be things that WINE can't emulate well (hence the need for ReactOS). In this way, it seems that if something runs in WINE, it will run in ReactOS, whereas the fact that something runs in ReactOS doesn't mean that it will necessarily run in WINE.
Targeting WINE is well documented, perhaps easier to test, and by definition, should make your app compatible with ReactOS as a matter of course. In this way, you're not only gathering the rather large user base of current WINE users, but you're future-proofing yourself for whenever anyone wants to use your app with ReactOS.
In their homepage, at the Tour you can see a partial list of office, tools and games that already run OK (or more or less) at ReactOS. If you subscribe to the newsletter, you'll receive info about much more - for instance, I was quite surprised when I read most SQL Server 2000 tools actually work on ReactOS!! Query Analyzer, OSQL and Books Online work fine, Enterprise Manager and Profiler are buggy and the DBMS won't work at all.
At a former workplace (an all MS shop) we investigated seriously into it as a way to reduce our expenditure in licenses whilst keeping our in-house developed apps. Since it couldn't run MSDE fine, we had to abandon the project - hope in the future this will be solved and my ex-coworkers can push it again.
These announcements might as well be also on their homepage - I couldn't find them after 5 mins. of searching, though. Probably the easiest way to know all these compatibility issues is to join the newsletter, or look for its archives.
I have been tracking this OS' progress for quite some time. I believe it has all the potential to really bring an OSS operating system to the masses for it breaks the "chicken and egg" problem: it has applications and drivers from the very beginning (since it aims to have full ABI compatibility with MS Windows).
Just wait for their first beta, I won't be surprised if they surpass Linux in popularity really soon after that...
Post Edit: Found it! Look at section Support Database, it's the web place to go look for whether a particular piece of hardware of some program works on ReactOS.
ReactOS has been under development for a long long time.
They were in some hot water earlier because some of their code appeared to be line by line dissasembly of some NT kernel code, I think they have replaced all of it.
I wouldn't bother with cross platform testing until they hit the same market penetration as Linux, which I would wager is never.
Until ReactOS doesn't randomly crash just sitting there within 5 minutes of booting, I won't worry about testing my code on it. Don't get me wrong, I like ReactOS, but it's just not stable enough for any meaningful testing yet!
No, I do not think it is time to start thinking of it as a Windows replacement.
As the site states, it's still in the Alpha stages. More importantly, whos Windows replacement? Yours? Your users? The former is one thing, the latter is categorically a no-go.
As an aside, I'm not really sure who this OS is targetting. It has to be people who rely on Windows software but don't want to pay, because people who simply don't want Windows can use MacOS / Linux, and the support (community or otherwise) for these choices is good.
Moreover, if you use Linux you already have some amounts of Windows software support via Wine.
Back to people who rely on Windows software but don't want to pay. If they are home users they can just simply pirate it, if they are large business users they already have support contracts and trained people etc. It's hard enough for large businesses to be OK to update to new versions of Windows, let alone an open source replacement.
So I suppose that leaves small businesses who don't want to obtain illegal copies of MS software, can't afford the OS licences and rely on software that only runs on Windows and has bad of non-existent Wine compatibility.
It is a useful replacement for Windows when it runs 'your' software without crashing. At the moment it is not a general purpose os as it is too unstable (being only alpha) but people have used ReactOS successfully in anger for specific tasks already. As a windows replacement it has multiple potential uses, sandbox systems, test and development systems, multiple virtual instances, embedded devices, even packaging/bundling legacy apps with their own compatible o/s. Driver and application compatibility, freed from Microsoft's policy of planned obsolescence and regular GUI renewal, what's not to like?