I don't see general-purpose logic analyzers in labs as often as I did ten or twenty years ago.
On the other hand, I see special-purpose logic analyzers far more often. They're called USB analyzers and VMEbus analyzers, and your managers are INSANE if they put you on such a project without having such an analyzer (and, in the case of VMEbus projects, a chassis slot dedicated to a blank space, to hold the analyzer when (not if, but WHEN) you need it.
I also see far more powerful oscilloscopes a lot more often. A modern 4-channel digital storage scope is a thing of beauty, and it is absolutely critical if you are doing i2C or SPI or serial or any of a number of other things.
True in-circuit emulators have all but vanished. JTAG debuggers have become ubiquitous, and they can do ALMOST everything an in-circuit emulator could do.
What I still don't see is adequate attention paid up-front to writing correct source code before ever going into the lab. Unfortunately, as long as C and C++ are dominant, and Ada is a dirty word, I expect the "code in haste and debug at leisure" mindset to prevail.