Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Code Project
  1. Home
  2. The Lounge
  3. What do you do?

What do you do?

Scheduled Pinned Locked Moved The Lounge
questionloungecsharpvisual-studiodebugging
62 Posts 41 Posters 9 Views 1 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • Richard Andrew x64R Richard Andrew x64

    I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

    -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

    L Offline
    L Offline
    Leslie Sanford
    wrote on last edited by
    #4

    Richie308 wrote:

    When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it?

    My first thought when this happens to me is that it's a threading issue. Take a look at the points in which the threads in your app interact and make sure you've used judicious locking where necessary, i.e. make sure the threads aren't messing with the same data at the same time thus corrupting it.

    1 Reply Last reply
    0
    • Richard Andrew x64R Richard Andrew x64

      I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

      -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

      C Offline
      C Offline
      Christopher Duncan
      wrote on last edited by
      #5

      Software problems: Burn incense. Sacrifice chickens. Hardware problems: Burn incense. Sacrifice goats. Management problems: Burn incense. Sacrifice managers.

      Author of The Career Programmer and Unite the Tribes www.PracticalStrategyConsulting.com

      T T 2 Replies Last reply
      0
      • N Nish Nishant

        Crash dumps and Remote debugging are two options you have.

        Regards, Nish


        Nish’s thoughts on MFC, C++/CLI and .NET (my blog)
        C++/CLI in Action

        Fly on your way like an eagle Fly as high as the sun On your wings like an eagle Fly and touch the sun

        Richard Andrew x64R Offline
        Richard Andrew x64R Offline
        Richard Andrew x64
        wrote on last edited by
        #6

        Do you happen to know if the VS remote debugger works across the internet? It doesn't specifically say in the docs. It says only "Across domains" which I'm not sure is the same thing.

        -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

        N 1 Reply Last reply
        0
        • Richard Andrew x64R Richard Andrew x64

          Do you happen to know if the VS remote debugger works across the internet? It doesn't specifically say in the docs. It says only "Across domains" which I'm not sure is the same thing.

          -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

          N Offline
          N Offline
          Nish Nishant
          wrote on last edited by
          #7

          Richie308 wrote:

          Do you happen to know if the VS remote debugger works across the internet? It doesn't specifically say in the docs. It says only "Across domains" which I'm not sure is the same thing.

          I think you'd have to ask the client to allow you to VPN in to their network. I don't think it would work over the Internet - specially since I assume your client would have appropriate proxies and firewalls in place.

          Regards, Nish


          Nish’s thoughts on MFC, C++/CLI and .NET (my blog)
          C++/CLI in Action

          Fly on your way like an eagle Fly as high as the sun On your wings like an eagle Fly and touch the sun

          C 1 Reply Last reply
          0
          • Richard Andrew x64R Richard Andrew x64

            I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

            -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

            M Offline
            M Offline
            Michael Dunn
            wrote on last edited by
            #8

            Logging, logging, and more logging. In my main product (see .sig) I put in lots of logging just in case some critical part blows up. And since the app deals with IE and network communication - two areas that are susceptible to errors - it's really come in handy many times. We can ask the customer to send us a log (the log is encrypted, but they can click a button and it's zipped up into a CAB file on their desktop that they mail us) and many times that gives us enough info to provide a fix, or at least an explanation and a workaround. It does take extra work to do the logging, but it's like comments - if you write the logging at the same time as the "real" code, it ain't bad.

            --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?

            Richard Andrew x64R R L 3 Replies Last reply
            0
            • Richard Andrew x64R Richard Andrew x64

              I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

              -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

              M Offline
              M Offline
              Member 96
              wrote on last edited by
              #9

              Yeah, as Michael said it's pretty much something you have to plan for in advance. Our app has a debug mode that can be set by the end user in the config file and it will log everything that goes on of any consequence. I remember going through the phase your going through many years ago, once you have a very large user base these kinds of things are much easier to diagnose and after a few years inevitably they are something oddball on the computer that is failing. In a very serious case where it's important and you really need to get it going I would not at all hesitate to arrange with the end user to have a courier pick up the computer and bring it back to your shop, that's not out of the question in some situations. If you don't have serious logging in place I would not trust at all what the client is telling you, not because they are malicious necessarily, they just don't have an eye for detail like a programmer does and often miss out on critical things when relating to you what's happening. This is where you should consider something like CoPilot[^] It's dead easy to set up a session, nothing special is needed and you can walk through it with them and see exactly what's happening as well you can examine the machine in detail for yourself. We use that product all the time for sticky situations where it's difficult to communicate with the end user or they require extra help to set something up.


              "110%" - it's the new 70%

              Richard Andrew x64R 1 Reply Last reply
              0
              • Richard Andrew x64R Richard Andrew x64

                I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                J Offline
                J Offline
                Jim Crafton
                wrote on last edited by
                #10

                The old standby: LUser Error.

                ¡El diablo está en mis pantalones! ¡Mire, mire! Real Mentats use only 100% pure, unfooled around with Sapho Juice(tm)! SELECT * FROM User WHERE Clue > 0 0 rows returned Save an Orange - Use the VCF! VCF Blog

                1 Reply Last reply
                0
                • Richard Andrew x64R Richard Andrew x64

                  I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                  -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                  R Offline
                  R Offline
                  Rama Krishna Vavilala
                  wrote on last edited by
                  #11

                  You must rely on mini-dumps. They have worked great for me for last 6 years. I hope that you build the release module with symbols and that you store the symbols for each release. Once you get the mini-dump back you can analyze it on the development machine. You can also rely on logging, but I have not found that as effective as mini-dumps. In fact all my applications generate mini-dumps when they crash and I have a special setting to generate mini-dump with full memory. I think XP and Vista automatically generate a mini-dump file. All you need to do is to have symbols ready. But I need to verify this. I am planning on an extensive article that relates to mini-dumps, symbol servers and remote debugging. Your post motivates me to think that I need to start working on it. In the mean time look at this excellent article: http://www.codeproject.com/debug/postmortemdebug_standalone1.asp[^]

                  Richard Andrew x64R 1 Reply Last reply
                  0
                  • C Christopher Duncan

                    Software problems: Burn incense. Sacrifice chickens. Hardware problems: Burn incense. Sacrifice goats. Management problems: Burn incense. Sacrifice managers.

                    Author of The Career Programmer and Unite the Tribes www.PracticalStrategyConsulting.com

                    T Offline
                    T Offline
                    Tim Carmichael
                    wrote on last edited by
                    #12

                    Ok, that get's a 5...

                    B 1 Reply Last reply
                    0
                    • R Rama Krishna Vavilala

                      You must rely on mini-dumps. They have worked great for me for last 6 years. I hope that you build the release module with symbols and that you store the symbols for each release. Once you get the mini-dump back you can analyze it on the development machine. You can also rely on logging, but I have not found that as effective as mini-dumps. In fact all my applications generate mini-dumps when they crash and I have a special setting to generate mini-dump with full memory. I think XP and Vista automatically generate a mini-dump file. All you need to do is to have symbols ready. But I need to verify this. I am planning on an extensive article that relates to mini-dumps, symbol servers and remote debugging. Your post motivates me to think that I need to start working on it. In the mean time look at this excellent article: http://www.codeproject.com/debug/postmortemdebug_standalone1.asp[^]

                      Richard Andrew x64R Offline
                      Richard Andrew x64R Offline
                      Richard Andrew x64
                      wrote on last edited by
                      #13

                      Thank you very much for this information! I think this is the course I will follow. Does the binary that I ship to the client need to have symbols for the dump to work correctly, or do I just need the symbols on my machine?

                      -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                      R S 2 Replies Last reply
                      0
                      • M Michael Dunn

                        Logging, logging, and more logging. In my main product (see .sig) I put in lots of logging just in case some critical part blows up. And since the app deals with IE and network communication - two areas that are susceptible to errors - it's really come in handy many times. We can ask the customer to send us a log (the log is encrypted, but they can click a button and it's zipped up into a CAB file on their desktop that they mail us) and many times that gives us enough info to provide a fix, or at least an explanation and a workaround. It does take extra work to do the logging, but it's like comments - if you write the logging at the same time as the "real" code, it ain't bad.

                        --Mike-- Visual C++ MVP :cool: LINKS~! Ericahist | PimpFish | CP SearchBar v3.0 | C++ Forum FAQ Ford, what's this fish doing in my ear?

                        Richard Andrew x64R Offline
                        Richard Andrew x64R Offline
                        Richard Andrew x64
                        wrote on last edited by
                        #14

                        Thanks for your advice. I will see about implementing some logging.

                        -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                        P 1 Reply Last reply
                        0
                        • Richard Andrew x64R Richard Andrew x64

                          Thank you very much for this information! I think this is the course I will follow. Does the binary that I ship to the client need to have symbols for the dump to work correctly, or do I just need the symbols on my machine?

                          -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                          R Offline
                          R Offline
                          Rama Krishna Vavilala
                          wrote on last edited by
                          #15

                          You just need to have symbols on your machine. You don't need to ship the symbols. Using symbols people can reverse engineer your application.:)

                          1 Reply Last reply
                          0
                          • M Member 96

                            Yeah, as Michael said it's pretty much something you have to plan for in advance. Our app has a debug mode that can be set by the end user in the config file and it will log everything that goes on of any consequence. I remember going through the phase your going through many years ago, once you have a very large user base these kinds of things are much easier to diagnose and after a few years inevitably they are something oddball on the computer that is failing. In a very serious case where it's important and you really need to get it going I would not at all hesitate to arrange with the end user to have a courier pick up the computer and bring it back to your shop, that's not out of the question in some situations. If you don't have serious logging in place I would not trust at all what the client is telling you, not because they are malicious necessarily, they just don't have an eye for detail like a programmer does and often miss out on critical things when relating to you what's happening. This is where you should consider something like CoPilot[^] It's dead easy to set up a session, nothing special is needed and you can walk through it with them and see exactly what's happening as well you can examine the machine in detail for yourself. We use that product all the time for sticky situations where it's difficult to communicate with the end user or they require extra help to set something up.


                            "110%" - it's the new 70%

                            Richard Andrew x64R Offline
                            Richard Andrew x64R Offline
                            Richard Andrew x64
                            wrote on last edited by
                            #16

                            Thanks for your excellent post. The client and I do make extensive use of Remote Assistance, but the crashes are intermittent, and we can't be connected all day long.

                            -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                            R 1 Reply Last reply
                            0
                            • Richard Andrew x64R Richard Andrew x64

                              I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                              -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                              J Offline
                              J Offline
                              Judah Gabriel Himango
                              wrote on last edited by
                              #17

                              Simple. You need to utilize your inner psychic debugging skills. ;)

                              Tech, life, family, faith: Give me a visit. I'm currently blogging about: Virginia Tech Shootings, Guns, and Politics The apostle Paul, modernly speaking: Epistles of Paul Judah Himango

                              1 Reply Last reply
                              0
                              • Richard Andrew x64R Richard Andrew x64

                                I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                                -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                J Offline
                                J Offline
                                Joan M
                                wrote on last edited by
                                #18

                                I've seen sometimes that the users are not telling the truth, in our programs we log almost everything, and even doing that sometimes the users can catch us by not telling all the truth or by missing some important things because they don't know that they were important. You can: - Remote debug through internet (this will imply modifying the internal VPN's of the customer so this can become a problem if you must do it yourself (I'd never do that by myself)). - Remote connect to that computer in order to be able to see what has happened exactly once the app has crashed or even having an eye on it working in order to see what is the customer doing. In order to do that I've started using the "logmein" software and it works like charm because it goes through the 80 port and in this way you must not modify anything in the routers... - Log everything, it is very important when you deploy an application to be able to control what is happening. - Buy a tent and start living in front of that computer... ;) Hope this helps, and tons of luck finding the cause of your problems! :rose:

                                Richard Andrew x64R 1 Reply Last reply
                                0
                                • Richard Andrew x64R Richard Andrew x64

                                  I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                                  -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                  L Offline
                                  L Offline
                                  Lost User
                                  wrote on last edited by
                                  #19

                                  Just huff and puff a lot and blame another app on their system while adding logging to your app.

                                  "I'm a great believer in luck, and I find the harder I work the more I have of it." - Thomas Jefferson

                                  1 Reply Last reply
                                  0
                                  • J Joan M

                                    I've seen sometimes that the users are not telling the truth, in our programs we log almost everything, and even doing that sometimes the users can catch us by not telling all the truth or by missing some important things because they don't know that they were important. You can: - Remote debug through internet (this will imply modifying the internal VPN's of the customer so this can become a problem if you must do it yourself (I'd never do that by myself)). - Remote connect to that computer in order to be able to see what has happened exactly once the app has crashed or even having an eye on it working in order to see what is the customer doing. In order to do that I've started using the "logmein" software and it works like charm because it goes through the 80 port and in this way you must not modify anything in the routers... - Log everything, it is very important when you deploy an application to be able to control what is happening. - Buy a tent and start living in front of that computer... ;) Hope this helps, and tons of luck finding the cause of your problems! :rose:

                                    Richard Andrew x64R Offline
                                    Richard Andrew x64R Offline
                                    Richard Andrew x64
                                    wrote on last edited by
                                    #20

                                    Thanks, Joan. My customer does not have a VPN, he's just a little guy, so that pretty much rules out remote debugging. Thanks for your knowledge and encouragement!

                                    -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                    1 Reply Last reply
                                    0
                                    • Richard Andrew x64R Richard Andrew x64

                                      I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                                      -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                      E Offline
                                      E Offline
                                      El Corazon
                                      wrote on last edited by
                                      #21

                                      Richie308 wrote:

                                      what on Earth is there to do about it?

                                      In my application is a multithreaded debugging logger as well as an execution startup log. The startup log does not affect real-time only because it is there only during startup. It logs steps in the process of starting the application such that I know where something crashes. But that is only for startup, as I said. I have a multi-threaded UDP transmission thread that when enabled monitors application activity. Think of it as a debugger/profiler internal to the system. When enabled I know what is running, what was last operated on, and what is taking longer than it should. The client has a copy of my debugging monitoring application, though they usually don't know it. When something goes wrong, I walk them through enabling the debug-thread, and starting up the client to monitor it. When it dies I ask for the last few lines. This on top of what others have said.

                                      _________________________ Asu no koto o ieba, tenjo de nezumi ga warau. Talk about things of tomorrow and the mice in the ceiling laugh. (Japanese Proverb)

                                      Richard Andrew x64R 1 Reply Last reply
                                      0
                                      • Richard Andrew x64R Richard Andrew x64

                                        I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                                        -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                        C Offline
                                        C Offline
                                        Christian Graus
                                        wrote on last edited by
                                        #22

                                        Any app that I write will deploy with code to write an error log that gives me a stack track and error information if the app crashes. I do sometimes write code that adds to this log file, for deployment to machines where a bug is hard to track down, but, usually, I look and see what the problem is. Writing small functions is generally a good thing, but it really helps here - if there's a way to log the line number of a crash in C#, I don't know it. So, a 100 line function would be hard to debug, a 10 line function, less so :-)

                                        Christian Graus - Microsoft MVP - C++ Metal Musings - Rex and my new metal blog "I am working on a project that will convert a FORTRAN code to corresponding C++ code.I am not aware of FORTRAN syntax" ( spotted in the C++/CLI forum )

                                        1 Reply Last reply
                                        0
                                        • Richard Andrew x64R Richard Andrew x64

                                          I'm only looking for general advice with this question, that's why I posted it in the lounge. Please accept my groveling apologies if this is not appropriate for the lounge. When your app is having mysterious crashes on the client's machine, and you cannot replicate them on your development machine, what on Earth is there to do about it? Assuming it's not an option to install Visual Studio onto the client machine, and the fact that the crashes are random and infrequent enough to make a remote debug session impractical, what strategy can be employed?

                                          -------------------------------- "All that is necessary for the forces of evil to win in the world is for enough good men to do nothing" -- Edmund Burke

                                          N Offline
                                          N Offline
                                          Nick Hodapp
                                          wrote on last edited by
                                          #23

                                          I'm a big fan of crash dumps. Here's a good article to get started: http://www.codeproject.com/debug/postmortemdebug_standalone1.asp[^]

                                          R 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Categories
                                          • Recent
                                          • Tags
                                          • Popular
                                          • World
                                          • Users
                                          • Groups