This one has been bothering me for some time now. I dislike being asked to produce repro steps and/or a small project when I’m using a third party library or dev platform and something goes wrong.
Once, I opened an issue I had with Qt Creator with very easy repro steps. Guess what, the answer was… Did you follow the link? That is insane, really. It was so simple.
Besides, how can I do that when my project is big and already using multiple components? I do not have time for this. Furthermore, the problem may happen in rare occasions. How can I even know what the context was?
I’d prefer to be able to activate verbose logging, reproduce (or wait for) the problem and send the logs over. Wait… You do not have logs at the core of your library? Please consider adding it.
Native to Managed bridging is hard
And I’m not talking about potential issues involved in native to managed code bridging. For instance this one with React Native.
I had this other issue recently involving an iOS native component that had no log. A delegate was not being called and I had no idea why. Sure logs would have been helpful in the first place.
Managed language powered native apps and SDKs, with Javascript and c# for instance, are becoming increasingly mainstream. We must have a way to figure out what is going wrong quickly.
Yet, when I do take time to provide repro steps, worst case scenario, sometimes nothing happens.
Cross platform C or C++ native code is difficult too
But there are ways to be able to log whenever something seems wrong.
I’ve used this macro successfully in a React Native project for one of my customer.
May be this is the only way
Because nothing will mimic every possible runtime environments, please think about using logging everywhere.